T-SQL:FOR XML PATH 多筆輸出資料合併單一欄位輸出







需要在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


執行結果為

留言