【问题标题】: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
本