如何在 SQL Server 2008 中将多行连接为一个字符串?

12

如何将多行连接为一个字符串?

查询:

SELECT name FROM mytable;

结果:

name
----
kim
lee
park
cho

只是我想要。

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

不可能吗?


重复的内容:"MySQL:将多行作为逗号分隔的单行" - Hiren gardhariya
https://dev59.com/LW435IYBdhLWcg3w0TlP - garf1eld
3个回答

46

试试这个 -

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

11
为了帮助未来的访客,解释一下这个是如何工作的会很有帮助。 - Nubcake

10

今天早上我也在做类似的事情,添加该部分代码后也能处理只返回1行的情况。希望这会有所帮助。否则,请按照第一条评论中提供的链接进行操作。

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


8

试试这个

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

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