我想选择一组数据到一个单独的字符串中,但我仍然希望每个项目都在它自己的行上(然后我将它放在Crystal Reports中,并且它将比使用大量的子报表快。)SQL Server - 如何合并字符串并添加换行符?
所以,我有以下数据:
ID Assessor
1 Black
1 Jones
,我想查询它,并返回一个字符串,它看起来像:
Black
Jones
,如果我做一个选择使用聚结,我可以做它用逗号或分号分隔,但不是换行符分隔的:
BEGIN
declare @Assessors NVarChar(max)
Declare @LineFeed varchar(10)
DECLARE @Return varchar(10)
Set @LineFeed = char(10)
SET @Return = char(13)
Select @Assessors = COALESCE(@Assessors + ', ', '') + a.Assessor
FROM dbo.Assessment a
Where (@ID = a.ID)
Return @Assessors
END
因此,该函数将返回'Black,Jones'。但如果我改变线
Select @Assessors = COALESCE(@Assessors + @Return + @LineFeed, '') + a.Assessor
它返回'黑琼斯' - 它不放在换行或返回,只是一个空间。
我想我不必使用Coalesce,但我已经试过了标准连接,并且不会将它放在任何一个中。我现在已经有了这个功能,但是打算将它作为存储过程的一部分,所以速度更快。
+1。这让我想起了VB字符串处理的旧时代:-) – 2010-12-09 18:39:11