【问题标题】:Concatenate multiple fields with seperator使用分隔符连接多个字段
【发布时间】:2017-02-21 18:08:34
【问题描述】:

我的表包含 Address1、Address2、Address3 等...其中的值可以为 null 或为空。

我通过将这些字段连接成一个来构造完整地址。

Select Column1, Column2, ISNULL(Address1,'') + ', ' + ISNULL(Address2,'')+ ', ' + ISNULL(Address3,'') As FullAddress
from TableName

问题是如果 address1 为空,但它仍然附加我要删除的“,”。所以它最终像',address2value'

有没有更好的方法

【问题讨论】:

    标签: sql sql-server-2008-r2


    【解决方案1】:

    如果您不想要尾随或前导逗号,您可以这样做:

    Select Column1, Column2,
           STUFF(COALESCE(', ' + Address1, '') + COALESCE(', ' + Address2, '') + COALESCE(', ' + Address3, ''),
                 1, 2, '') As FullAddress
    from TableName;
    

    【讨论】:

      【解决方案2】:

      这符合你的想法吗?

      Select  Column1, 
              Column2, 
              ISNULL(Address1+',','') + ISNULL(Address2+',','')+ISNULL(Address3,'') As FullAddress
      from    TableName
      

      结果:

      【讨论】:

      【解决方案3】:

      如果任何address1或address2或address3包含Null,则不会添加分隔符

      SELECT Column1, Column2, CONCAT_WS(',',IFNULL(Address1,NULL),IFNULL(Address2,NULL),IFNULL(Address3,NULL)) AS FullAddress
      FROM TableName;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-04
        • 1970-01-01
        • 2014-07-24
        • 1970-01-01
        • 2021-12-27
        • 2010-10-09
        • 2019-09-26
        • 2020-11-29
        相关资源
        最近更新 更多