使用 FOR XML PATH 來連線值
FOR XML PATH
可用於將值連線成字串。下面的示例將值連線到 CSV
字串:
DECLARE @DataSource TABLE
(
[rowID] TINYINT
,[FirstName] NVARCHAR(32)
);
INSERT INTO @DataSource ([rowID], [FirstName])
VALUES (1, 'Alex')
,(2, 'Peter')
,(3, 'Alexsandyr')
,(4, 'George');
SELECT STUFF
(
(
SELECT ',' + [FirstName]
FROM @DataSource
ORDER BY [rowID] DESC
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1
,1
,''
);
幾個重要的注意事項:
ORDER BY
子句可用於以首選方式對值進行排序- 如果使用較長的值作為串聯分隔符,則還必須更改
STUFF
函式引數;
SELECT STUFF
(
(
SELECT '---' + [FirstName]
FROM @DataSource
ORDER BY [rowID] DESC
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1
,3 -- the "3" could also be represented as: LEN('---') for clarity
,''
);
- 當使用
TYPE
選項和.value
函式時,連線與NVARCHAR(MAX)
字串一起使用