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

表中的列称为zip5和zip4

我想将这些邮政编码与-之间

我当前正在使用mysql,我正在使用的查询是

从地址限制500中选择zip5,zip4,concat(zip5,'-',zip4)zip;

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

在这种情况下,新的串联列调用zip变为null。

我不希望这种情况发生。如果zip4至少没有数据,则应该显示zip5中的数据,且中间没有-。

最佳答案

您可以使用COALESCE

select zip5,
       zip4,
       concat(zip5,'-',coalesce(zip4,'')) zip
from address


或更好的CONCAT_WS

select zip5,
       zip4,
       CONCAT_WS('-', zip5, zip4) zip
from address

10-06 15:21