【问题标题】:unexpected result of concatenating column values into single string将列值连接成单个字符串的意外结果
【发布时间】:2012-09-04 06:01:55
【问题描述】:

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

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

预期:[值,值,值]

结果:[值,值,值]

有没有人有这个问题,或者我必须在其他地方找到我的错误?

【问题讨论】:

    标签: sql-server concatenation coalesce


    【解决方案1】:

    听起来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

    【讨论】:

      【解决方案2】:
      @result nvarchar(1024)
      SELECT @result = COALESCE(ltrim(rtrim(@result)) + ',', '') + ltrim(rtrim(column_name))
      FROM some_table
      

      【讨论】:

        猜你喜欢
        • 2018-01-27
        • 1970-01-01
        • 2014-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-25
        • 1970-01-01
        相关资源
        最近更新 更多