MySQL连接字段但忽略空字段
Posted
技术标签:
【中文标题】MySQL连接字段但忽略空字段【英文标题】:MySQL concatenating fields but ignoring empty ones 【发布时间】: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() 更简单的方法?
【问题讨论】:
【参考方案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,它是为此任务而设计的。
【讨论】:
以上是关于MySQL连接字段但忽略空字段的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 左连接时,查询条件查询某个字段为空或者为特定值解决方案
MySQL 左连接时,查询条件查询某个字段为空或者为特定值解决方案