MySQL连接字段但忽略空字段

jac*_*bot 9 mysql concatenation

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

SELECT CONCAT(`address1`, ' ',  `address2`, ' ', `address3`, ' ', `address4`, ' ', `post_code`) AS `address` FROM `table`
Run Code Online (Sandbox Code Playgroud)

所以我最终得到一个完整的地址字符串,address其中工作正常,但如果某些字段为空,那么我最终会得到很多双倍空格.如何消除多余的空间?有没有比在每个字段上执行IF()更简单的方法?

Qua*_*noi 19

SELECT  CONCAT_WS(' ',  NULLIF(address1, ''),  NULLIF(address2, ''),  NULLIF(address3, ''),  NULLIF(address4, ''),  NULLIF(post_code, ''))
FROM    table
Run Code Online (Sandbox Code Playgroud)

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

SELECT  CONCAT_WS(' ',  address1, address2, address3, address4, post_code)
FROM    table
Run Code Online (Sandbox Code Playgroud)