問題:
在SQL 中,函數包含一個檢索的查詢AccountCodes 表格中按排序排序的CodeName 值清單。目標是將這些值連接成單一字串並將結果儲存在 CodeNameString 變數中。
解決方案:
使用FOR XML PATH 和STUFF ( SQL Server 2005 或更高版本):
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = STUFF( (SELECT ',' + CodeName FROM dbo.AccountCodes ORDER BY Sort FOR XML PATH('')), 1, 1, '')這個方法使用FOR XML PATH 子句將CodeName 值連接到XML 字串中。然後使用 STUFF 函數將產生的 XML 轉換回字串,並刪除第一個字元(逗號)。
注意:
如果 CodeName 值包含,則此方法可能不起作用特定字符,例如 或 &。在這種情況下,建議採用替代解決方案,例如下面提出的解決方案:替代解決方案(使用DISTINCT 和FOR XML RAW):
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = DISTINCT(CodeName) WHERE EXISTS (SELECT 1 FROM dbo.AccountCodes WHERE CodeName = @CodeNameString) FOR XML RAW, ',')此方法使用FOR XML RAW 子句建立包含連接值(不包括重複值)的XML 字串。然後將該字串指派給 CodeNameString 變數。
以上是如何將 SQL 查詢結果連接成單一字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!