
需要在TSQL輸出時將多筆欄位盒併成單一欄位輸出
例:
# mId
1 A
2 B
3 C
4 D
5 E
輸出變成
# Finaldata
A,B,C,D,E
這需要用到 FOR XML PATH 來完成
FOR XML (SQL Server)
T-SQL語法
Select
LEFT(O.Datalist,LEN(O.Datalist)-1) AS FinalData FROM
(Select
(Select CAST(T.mId AS NVARCHAR) + ‘,’
From (Select X.mId FROM [dbo].[myTable] AS X) T FOR XML PATH(“)) AS ‘Datalist’) O
簡單的說明一下
1. 先列出要顯示的資料表欄位(如果為多個欄位可在這先行合併欄位)
SELECT X.mId FROM [dbo].[myTable] AS X
執行結果為

2. 使用 FOR XML 先合併成 XML格式 , 範例是用 ( , ) 逗號為欄位連結可自行變更
Select CAST(T.mId AS NVARCHAR) + ‘,’
From (Select X.mId FROM [dbo].[myTable] AS X) T FOR XML PATH(“)
執行結果為

3.依前二個語法執行後,會顯示為 XML格式的結果如左 A,B,C,D,E,
可看到多了一個逗號,如果想讓結果看起來漂亮一點,
需再用 LEFT() 來去除逗號
LEFT (Transact-SQL)
語法如下
Select
LEFT(O.Datalist,LEN(O.Datalist)-1) AS FinalData FROM
(Select
(Select CAST(T.mId AS NVARCHAR) + ‘,’
From (Select X.mId FROM [dbo].[myTable] AS X) T FOR XML PATH(“)) AS ‘Datalist’) O
執行結果為

留言
張貼留言