我有一个 MySQL 数据库,其中包含人员列表,包括他们的地址,我想在查询中将其作为一个字段返回。它分为 address1, address2, address3, address4, post_code
我想做类似下面的事情
SELECT CONCAT(`address1`, ' ', `address2`, ' ', `address3`, ' ', `address4`, ' ', `post_code`) AS `address` FROM `table`
所以我最终会在 address
中得到他们地址的完整字符串,这工作正常,但如果某些字段为空,那么我最终会得到很多双空格。我怎样才能消除多余的空间?有没有比在每个字段上执行 IF() 更简单的方法?
最佳答案
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
关于MySQL连接字段但忽略空字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342884/