SQL Server:組合 STUFF 和 FOR XML PATH 進行分組字串連線
本指南說明如何結合使用 SQL Server 的 STUFF
函數和 FOR XML PATH
子句來有效連接群組內的字串。
了解組件:
FOR XML PATH('')
: 子句將查詢結果轉換為 XML 格式。 使用空字串 (''
) 作為 PATH
參數會產生指定列中以逗號分隔的值列表,並包含在 XML 標記內。 例如:
<code class="language-sql">SELECT ',' + name FROM temp1 FOR XML PATH('')</code>
這將輸出:,aaa,bbb,ccc,ddd,eee
STUFF
函數: STUFF
函數透過取代字串的一部分來修改字串。 我們在這裡使用它來刪除 FOR XML PATH('')
產生的前導逗號。 此函數的參數是:
因此,STUFF((SELECT ',' NAME FROM temp1 FOR XML PATH('')), 1, 1, '')
刪除了最初的逗號,產生:aaa,bbb,ccc,ddd,eee
連接和分組:最終查詢使用 ID
列將連接的字串連接回原始表,並將結果分組以獲得所需的輸出:
<code class="language-sql">SELECT ID, abc = STUFF( (SELECT ',' + name FROM temp1 t1 WHERE t1.id = t2.id FOR XML PATH('')), 1, 1, '') FROM temp1 t2 GROUP BY id;</code>
這會產生以下結果集:
Id | abc |
---|---|
1 | aaa,bbb,ccc,ddd,eee |
此方法提供了一種簡潔有效的方法來連接 SQL Server 中群組內的字串,避免了使用更複雜的技術。
以上是SQL Server 的 STUFF 函數和 FOR XML PATH 子句如何一起使用來連接群組內的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!