MySQL连接字段但忽略空字段

MySQL连接字段但忽略空字段,mysql,concatenation,Mysql,Concatenation,我有一个MySQL数据库,其中有一组人,包括他们的地址,我想在查询中作为一个字段返回。它被分为address1、address2、address3、address4、post\u code,我想做如下事情 SELECT CONCAT(`address1`, ' ', `address2`, ' ', `address3`, ' ', `address4`, ' ', `post_code`) AS `address` FROM `table` 因此,我将在address中以完整的地址字符串结

我有一个MySQL数据库,其中有一组人,包括他们的地址,我想在查询中作为一个字段返回。它被分为
address1、address2、address3、address4、post\u code
,我想做如下事情

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

因此,我将在
address
中以完整的地址字符串结束,这很好,但是如果一些字段为空,那么我将以大量的双空格结束。如何消除多余的空间?有比在每个字段上执行IF()更简单的方法吗?

使用CONCAT\u WS代替CONCAT

SELECT CONCAT_WS(' ',`address1`, `address2`,  `address3`,  `address4`,  `post_code`) AS `address` 
FROM `table`;
如果您的空字段实际上是
NULL
,则可以省略
NULL如果
构造:

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

您也可以使用COALESCE,而不是IFNULL,它是为这个任务而设计的

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