【问题标题】:How to concat many rows into one string in SQL Server 2008? [duplicate]如何在 SQL Server 2008 中将多行合并为一个字符串? [复制]
【发布时间】:2013-08-08 18:20:51
【问题描述】:

如何将多行拼接成一个字符串?

查询:

SELECT name FROM mytable;

结果:

name
----
kim
lee
park
cho

只要我想要。

name
----
kim,lee,park,cho

不可能?

【问题讨论】:

标签: sql-server database sql-server-2008


【解决方案1】:

试试这个 -

DECLARE @temp TABLE (name NVARCHAR(50))

INSERT INTO @temp (name)
VALUES ('kim'),('lee'),('park'),('cho')

SELECT STUFF((
    SELECT ',' + name
    FROM @temp
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')

输出 -

kim,lee,park,cho

【讨论】:

  • 解释其工作原理将对未来的访问者有所帮助。
【解决方案2】:

试试这个

 SELECT   
name= substring((SELECT ( ', ' + Name)
                       FROM TableName t
                       FOR XML PATH( '' )
                      ), 3, 1000 )  FROM mytable tn

【讨论】:

    【解决方案3】:

    我今天早上一直在做类似的事情,添加案例也适用于 1 个返回的行。希望这可以帮助。否则,请点击第一条评论发送给您的链接。

    Declare @NameList VarChar(MAX) = ''    
    select @NameList = 
        case when @NameList = ''
            then coalesce(Name, '')
            else @NameList + coalesce(',' + Name, '')
        end
    from mytable
    print @NameList 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 2011-12-21
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多