Sql server 使用回车换行符将多行合并为一列
下面的代码(我从中获得)很好地将多个用逗号分隔的字段合并在一起Sql server 使用回车换行符将多行合并为一列,sql-server,Sql Server,下面的代码(我从中获得)很好地将多个用逗号分隔的字段合并在一起 select player, stuff((SELECT distinct ', ' + cast(score as varchar(10)) FROM yourtable t2 where t2.player = t1.player FOR XML PATH('')),1,1,'') from yourtable t1 group by player 我需要用回车换行符替换逗号。我
select player,
stuff((SELECT distinct ', ' + cast(score as varchar(10))
FROM yourtable t2
where t2.player = t1.player
FOR XML PATH('')),1,1,'')
from yourtable t1
group by player
我需要用回车换行符替换逗号。我尝试了下面的代码,但它开始用以下字符分隔条目:“x0D;”
我怀疑问题出在“FOR-XML路径(“”)),1,1,”,但我不知道应该放什么值
任何帮助都将不胜感激
谢谢 您实际上可以替换STUFF结果上的逗号 试试这个:
select player,
replace(stuff((SELECT distinct ', ' + cast(score as varchar(10))
FROM yourtable t2
where t2.player = t1.player
FOR XML PATH('')),1,1,''), ',', char(13) + char(10))
from yourtable t1
group by player
您可以使用以下方法处理XML添加的所有特殊字符(其中
x0D;
是其中之一):
FOR XML PATH(''), TYPE).value('.','nvarchar(max)')
更多信息
您还需要将STUFF
的第三个参数调整为结果开头需要跳过的字符数(在本例中为2,因为您有char(13)
和char(10)
)
因此,您的解决方案是:
select player,
stuff((SELECT distinct CHAR(13)+CHAR(10) + cast(score as varchar(10))
FROM yourtable t2
where t2.player = t1.player
FOR XML PATH(''), TYPE).value('.','nvarchar(max)'),1,2,'')
from yourtable t1
group by player
换一行而不是逗号怎么样?
select player,
stuff((SELECT distinct CHAR(13)+CHAR(10) + cast(score as varchar(10))
FROM yourtable t2
where t2.player = t1.player
FOR XML PATH(''), TYPE).value('.','nvarchar(max)'),1,2,'')
from yourtable t1
group by player