首頁 >資料庫 >mysql教程 >如何有效地將 SQL 查詢結果連接成單一字串?

如何有效地將 SQL 查詢結果連接成單一字串?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-03 09:42:43219瀏覽

How to Efficiently Concatenate SQL Query Results into a Single String?

將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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn