將SQL 查詢結果累積到單一字串中
將查詢結果連接到單一字串中是資料庫程式設計中的常見任務。在 SQL Server 中,有兩種方法可以實現此目的:使用 FOR XML PATH & STUFF 技術或利用 STRING_AGG 函數。
FOR XML PATH & STUFF
For SQL Server 2005 及更高版本中,FOR XML PATH & STUFF 組合是有效的方法:
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = STUFF( (SELECT ',' + CodeName FROM dbo.AccountCodes ORDER BY Sort FOR XML PATH('')), 1, 1, '')
此解決方案使用FOR XML PATH('') 將結果連接到XML 字串,然後使用STUFF 刪除從 XML 連線繼承的初始逗號。
STRING_AGG 函數
在SQL Server 2017 及更高版本中, STRING_AGG 函數為此任務提供了專用解決方案:
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = STRING_AGG(CodeName, ',') FROM dbo.AccountCodes ORDER BY Sort
STRING_AGG函數將結果直接連接成單一字串,並用指定的分隔符號(在本例中為“,”)分隔。
處理特殊字元
重要的是請注意,FOR XML PATH & STUFF 方法可能會將某些特殊字元(例如「」和「&」)編碼為XML 實體( 和&)。對於這些字元有問題的情況,可以使用帶有 USING XMLTYPE 子句的 STRING_AGG 函數:
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = STRING_AGG(CodeName, ',') USING XMLTYPE FROM dbo.AccountCodes ORDER BY Sort
以上是如何有效地將 SQL 查詢結果連接成單一字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!