SQL Server 字串連線:掌握 FOR XML PATH 和 STUFF
SQL Server 提供強大的字串操作功能,特別是 FOR XML PATH
和 STUFF
函數。 這些函數對於將多行資料連接到單一字串中非常有用。
解構FOR XML PATH
FOR XML PATH
函數將查詢結果轉換為 XML 格式。 透過指定路徑,您可以控制 XML 結構。 例如,要建立以逗號分隔的名稱清單:
<code class="language-sql">SELECT ',' + name FROM temp1 FOR XML PATH('')</code>
這會產生一個帶有前導逗號的 XML 字串。
使用STUFF
功能
STUFF
函數透過替換字元來修改字串。它需要四個參數:原始字串、起始位置、要刪除的字元數以及替換字串。
要從上面的 XML 輸出中刪除初始逗號:
<code class="language-sql">STUFF((SELECT ',' + name FROM temp1 FOR XML PATH('')), 1, 1, '')</code>
這可以有效地清理字串,留下逗號分隔的名稱清單。
FOR XML PATH
和 STUFF
組合這些函數可以實現強大的記錄集串聯。 考慮這個 SQL 查詢:
<code class="language-sql">SELECT ID, abc = STUFF( (SELECT ',' + name FROM temp1 WHERE t1.id = t2.id FOR XML PATH ('')) , 1, 1, '') FROM temp1 t2 GROUP BY id</code>
此查詢執行下列步驟:
FOR XML PATH
子查詢: 此巢狀查詢會擷取與每個ID 關聯的名稱,將temp1
(別名t1
)與外部查詢的表(別名t2
)連接起來。 FOR XML PATH('')
將這些名稱連接到單一 XML 元素。 STUFF
功能: 外部查詢使用 STUFF
從子查詢產生的 XML 字串中刪除前導逗號。 GROUP BY
子句: GROUP BY id
確保最終結果只包含唯一的 ID,每個 ID 都有對應的串連名稱。 結論
FOR XML PATH
和 STUFF
的結合提供了一種在 SQL Server 中進行字串連接的簡化方法。此技術簡化了格式化字串的建立、合併多行文字以及建立自訂聚合。
以上是FOR XML PATH 和 STUFF 函數如何協同運作以實現 SQL Server 中的字串連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!