【问题标题】:MySQL concatenating fields but ignoring empty onesMySQL连接字段但忽略空字段
【发布时间】:2011-01-21 12:31:56
【问题描述】:

我有一个 MySQL 数据库,其中包含人员列表,包括他们的地址,我想将其作为查询中的一个字段返回。它分为address1, address2, address3, address4, post_code,我想做如下的事情

SELECT CONCAT(`address1`, ' ',  `address2`, ' ', `address3`, ' ', `address4`, ' ', `post_code`) AS `address` FROM `table`

所以我最终会在address 中得到他们地址的完整字符串,这很好用,但如果某些字段为空,那么我最终会得到很多双空格。如何消除多余的空格?有没有比在每个字段上执行 IF() 更简单的方法?

【问题讨论】:

    标签: mysql concatenation


    【解决方案1】:
    SELECT  CONCAT_WS(' ',  NULLIF(address1, ''),  NULLIF(address2, ''),  NULLIF(address3, ''),  NULLIF(address4, ''),  NULLIF(post_code, ''))
    FROM    table
    

    如果您的空字段实际上是NULL,您可以省略NULLIF 构造:

    SELECT  CONCAT_WS(' ',  address1, address2, address3, address4, post_code)
    FROM    table
    

    【讨论】:

      【解决方案2】:

      使用 CONCAT_WS 代替 CONCAT

      SELECT CONCAT_WS(' ',`address1`, `address2`,  `address3`,  `address4`,  `post_code`) AS `address` 
      FROM `table`;
      

      【讨论】:

        【解决方案3】:

        您也可以使用 COALESCE 来代替 IFNULL,它是为此任务而设计的。

        【讨论】:

          猜你喜欢
          • 2014-09-27
          • 1970-01-01
          • 1970-01-01
          • 2021-09-06
          • 1970-01-01
          • 1970-01-01
          • 2023-02-25
          • 2016-07-12
          • 1970-01-01
          相关资源
          最近更新 更多