将列值连接成单个字符串的意外结果

时间:2012-09-11 10:14:49

标签: sql-server concatenation coalesce

我为此目的看了很多使用COALESCE和其他“方法”的例子。这是其中之一:

     @result nvarchar(1024)
     SELECT @result = COALESCE(@result + ',', '') + column_name
     FROM some_table

预期:[价值,价值,价值]

结果:[价值,价值,价值]

有人遇到这个问题,还是我必须在其他方面找到错误?

2 个答案:

答案 0 :(得分:2)

听起来你可能在column_name值中有空格。您应该在column_name周围使用LTRIM()RTRIM()删除任何空格。:

declare @result nvarchar(1024)

SELECT @result = COALESCE(@result + ',', '') + ltrim(rtrim(col1))
FROM yourtable

select @result

请参阅SQL Fiddle with Demo

或者您可以在最终结果上使用REPLACE()来删除空格:

declare @result nvarchar(1024)

SELECT @result = COALESCE(@result + ',', '') + col1
FROM yourtable

select replace(@result, ' ', '')

请参阅SQL Fiddle with Demo

答案 1 :(得分:1)

@result nvarchar(1024)
SELECT @result = COALESCE(ltrim(rtrim(@result)) + ',', '') + ltrim(rtrim(column_name))
FROM some_table