超越 COALESCE 和 FOR XML:SQL Azure 中的高效字串聚合
許多尋求從多個 SQL 行進行高效字串串聯的開發人員會遇到 SQL Azure 中 COALESCE
和 FOR XML
等標準函數的限制,特別是當 CLR 函數不可用時。本文介紹了一個強大的 Transact-SQL 解決方案,它使用公共表表達式 (CTE) 來實現健全且高效的字串聚合。
解:用於順序串聯的遞歸 CTE
我們的方法利用兩個 CTE:
Partitioned
CTE: 這將根據 ID
列為每個條目分配行號,並按 Name
列按字母順序排序。這一關鍵步驟將具有相同 ID
的行分組,並確保一致的串聯順序。
Concatenated
CTE(遞歸): 此 CTE 迭代建立連接字串。它遞歸地將名稱附加到 FullName
列,累積最終結果。
然後,主查詢僅選擇每個 ID
具有最高行號的行,從而為每個群組產生完整的聚合字串。
詳細的細分和自訂選項
此方法包含三個核心階段:
FullName
列中建立聚合字串。 ID
。 這種技術提供了靈活性。您可以調整分組(在此範例中為 ID
)和排序標準(此處為 Name
按字母順序排列)以適合您的特定資料結構和要求。 一致的結果取決於定義分組和排序參數。
說明性範例與輸出
讓我們使用這個範例資料:
<code class="language-sql">INSERT dbo.SourceTable (ID, Name) VALUES (1, 'Matt'), (1, 'Rocks'), (2, 'Stylus'), (3, 'Foo'), (3, 'Bar'), (3, 'Baz')</code>
執行查詢將產生:
<code>ID FullName ----------- ------------------------------ 2 Stylus 3 Bar, Baz, Foo 1 Matt, Rocks</code>
這清楚地展示了跨多行字串的有效串聯,為 SQL Azure 字串聚合任務提供了 CLR 函數的可靠替代方案。
以上是如何在不使用 CLR 函數的情況下高效連接 SQL Azure 中多行的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!