将行转换为一列 SQL Server

3

我正在使用以下查询将行转换为列。

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 &amp CO.,SIMRAN TRADERS,LABOUR &amp WELFARE,

如何去除 &?

1个回答

8

如果您在示例中保留了最后一个逗号,那么就不需要使用 STUFF 函数,特别是当您将其与参数 ,1,0,'' 一起使用时,这是一个无操作。

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]

注意:问题在于您正在使用一个跟互联网几乎同龄的通用模式,该模式没有考虑到XML实体化。使用FOR XML TYPE指示符在通过.value, varchar(max)再次提取时保留原始文本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接