sql-server - 仅当列不为空时才用逗号分隔 SQL Server 连接

标签 sql-server string string-concatenation

我有以下 SQL 语句:

@All = COALESCE(NULLIF(@Asc1, '') + ',', '') +
        OALESCE(NULLIF(@Asc2, '') + ',', '') +
        OALESCE(NULLIF(@Asc3, '') + ',', '');

即使任何变量( @Asc1@Asc2@Asc3 )具有 NULL 或空值,这也会在末尾插入一个逗号。

例如:
  • 如果 @Asc1 = 1234@Asc2 = 3456@Asc3 = '' ,那么 @All 最终将是 1234,3456,

  • 我希望 @All1234,3456
    谢谢。

    最佳答案

    使用 stuff() 删除第一个逗号并反转逗号连接:

    set @all = stuff(
        coalesce(','+nullif(@Asc1, ''), '')
      + coalesce(','+nullif(@Asc2, ''), '')
      + coalesce(','+nullif(@Asc3, ''), '')
      ,1,1,'');
    

    reextester 演示:http://rextester.com/UNDS90887

    返回:1234,3456

    关于sql-server - 仅当列不为空时才用逗号分隔 SQL Server 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47189214/

    相关文章:

    sql - 根据另一列的值选择特定列

    c# - 如何屏蔽字符串?

    r - 如何正确地连接R中的比迪字符串?

    java - 如何在每个字符串索引内连接字符串或单词

    sql-server - 不可信约束

    c# - 我可以异步创建多个 DBConnections 吗?

    sql-server - 将 SSRS R2 报告部署到非 R2 服务器

    c++ string += 是如何实现的?

    java - 使字符串真正不可变

    sql - 如何在 redshift 中对字段进行 GROUP BY 和 CONCATENATE