SQL Server - 如何合并字符串并添加换行符?

时间:2010-12-09 18:33:53

标签: sql-server sql-server-2008 newline string-concatenation

我想在一个字符串中选择一组数据,但我仍然希望每个项目都在自己的行上(然后我将它放在Crystal Reports中,它将比使用大量的子报告更快。)

所以,我有以下数据:

ID  Assessor
1   Black
1   Jones

我想查询它,并返回一个看起来像的字符串:

Black
Jones

如果我使用coalesce进行选择,我可以用逗号或分号分隔,但不用换行分隔:

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

它返回'Black Jones' - 它没有放入换行或返回,只是一个空格。

我想我不必使用Coalesce,但我已经尝试过标准连接,并且不会将它放入其中。我现在已经在函数中使用了它,但是计划将它作为存储过程的一部分,因此它更快。

2 个答案:

答案 0 :(得分:7)

CHAR(13)+CHAR(10)会产生换行符,我会一直在生产代码中这样做。

我运行了你的代码,它在我的系统上产生了换行符。在SSMS中,将视图切换为“结果到网格”中的“结果到文本”,您将看到换行符。

答案 1 :(得分:1)

使用Char函数插入:

标签  char(9)

换行  char(10)

回车  char(13)