我正在使用以下查询将行转换为列
SELECT STUFF((SELECT NAME + ',' FROM TABLE1
FOR XML PATH('')),1,0,'') AS [ACCOUNT NAMES]
表格有以下数据
NAME
-------------------
GURPREET & CO.
SIMRAN TRADERS
LABOUR & WELFARE
-------------------
我想要这样的输出
GURPREET & CO., SIMRAN TRADERS, LABOUR & WELFARE,
但是给定输出的sql
GURPREET & CO., SIMRAN TRADERS, LABOUR & WELFARE,
如何删除 &?
最佳答案
由于您在示例中保留了最后一个逗号,因此您不需要 STUFF,尤其是当您将它与参数 ,1,0,''
一起使用时,这是一个否-op。
SELECT
(SELECT NAME + ','
FROM TABLE1
FOR XML PATH(''),type).value('.','nvarchar(max)') AS [ACCOUNT NAMES]
如果您确实想要删除最后一个逗号,那么应该是这样的:
SELECT STUFF(
(SELECT ',' + NAME
FROM TABLE1
FOR XML PATH(''),type).value('.','nvarchar(max)'),1,1,'') AS [ACCOUNT NAMES]
注意:问题在于您使用的通用模式几乎与 Internet 一样古老,它没有考虑 XML 实体化。使用 FOR XML TYPE
说明符在通过 .value, varchar(max)
再次提取时保留原始文本。
关于sql - 将行转换为一列sql server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13391950/