使用 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)
字符串一起使用