MySQL连接字段但忽略空字段

标签 mysql concatenation

我有一个 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/

相关文章:

c# - 使用 Php Mysql 进行许可证检查

swift - 有没有办法快速连接 var 的名称?

linux - 如何连接具有相同标题的多个文件?有些文件只有标题

mysql - 使用 SELECT 使用 CONCAT 和 LOOP 进行查询

mysql - 将 Sphinx 与 MySql Regex 结合起来?

php - 选择最大匹配的外键(组)

php - echo mysql DATE(table_date) 未定义常量

mysql - 尝试编写 MySQL 触发器以替换 phpmyadmin 上的 CHECK 约束时出现语法错误

xml - 使用 xslt 合并/连接 xml 中属性的值

python - 如何在不合并索引的情况下连接两个具有不同多索引的数据帧?