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

cho*_*obo 10 database sql-server sql-server-2008

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

查询:

SELECT name FROM mytable;
Run Code Online (Sandbox Code Playgroud)

结果:

name
----
kim
lee
park
cho
Run Code Online (Sandbox Code Playgroud)

只是我想要.

name
----
kim,lee,park,cho
Run Code Online (Sandbox Code Playgroud)

不可能?

Dev*_*art 41

试试这个 -

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, '')
Run Code Online (Sandbox Code Playgroud)

输出 -

kim,lee,park,cho
Run Code Online (Sandbox Code Playgroud)

  • 对其工作原理的解释将有助于未来的访问者. (7认同)

小智 10

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

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


Ami*_*mit 8

试试这个

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