Mysql 列的串联

Mysql 列的串联,mysql,sql,Mysql,Sql,我有一个包含美国邮政编码的数据库中的地址表 表中的列称为zip5和zip4 我想把这些邮政编码和-结合起来 我目前使用的是mysql,我使用的查询是 从地址限制500中选择zip5、zip4、concat(zip5’-’、zip4)zip 现在,在某些情况下,zip4列为null,但zip5列中有数据 在这种情况下,新的连接列调用zip将变为null 我不想发生这种事。如果zip4没有数据,至少它应该显示zip5的数据,并且中间没有 SELECT CASE WHEN z

我有一个包含美国邮政编码的数据库中的地址表

表中的列称为zip5和zip4

我想把这些邮政编码和-结合起来

我目前使用的是mysql,我使用的查询是

从地址限制500中选择zip5、zip4、concat(zip5’-’、zip4)zip

现在,在某些情况下,zip4列为null,但zip5列中有数据

在这种情况下,新的连接列调用zip将变为null

我不想发生这种事。如果zip4没有数据,至少它应该显示zip5的数据,并且中间没有

SELECT
    CASE 
        WHEN zip4 IS NULL THEN zip5
        ELSE concat(zip5,'-',zip4) 
    END zip 
from address limit 500;

您可以使用
合并

select zip5, 
       zip4,
       concat(zip5,'-',coalesce(zip4,'')) zip 
from address
或者更好


@ChrisB可能重复该问题与不正确使用+进行连接有关。
select zip5, 
       zip4,
       CONCAT_WS('-', zip5, zip4) zip 
from address