MySQL:concat拼接字段导致数据为空问题解决方案

使用MySQL concat函数进行拼接不同字段时,如果遇到拼接变量其中一个是Null值的情况,会导致整个拼接的字段为Null。

看例子:

select iv.id as vehicleId
from vehicle iv
where iv.id < 5
order by iv.id;

MySQL:concat拼接字段导致数据为空问题解决方案_第1张图片

select id, company_name
from company
where id = 1;

MySQL:concat拼接字段导致数据为空问题解决方案_第2张图片

当进行关联查询时,vehicle表中假设有两条数据company_id为null,那么就会导致concat的字段整个为空。

select iv.id as vehicleId, company_name as companyName, concat(iv.id, 'concat', ic.company_name) as concatName
from vehicle iv
         left join company ic on ic.id = iv.insurance_company_id = ic.id
where iv.id < 5
order by iv.id;

MySQL:concat拼接字段导致数据为空问题解决方案_第3张图片

解决方案:

concat配合IFNULL使用。

select iv.id                                                            as vehicleId,
       company_name                                                     as companyName,
       concat(ifnull(iv.id, 'null'), 'concat', ifnull(ic.company_name, 'null')) as concatName
from insurance_vehicle iv
         left join insurance_company ic on ic.id = iv.insurance_company_id = ic.id
where iv.id < 5
order by iv.id;

MySQL:concat拼接字段导致数据为空问题解决方案_第4张图片

你可能感兴趣的:(MySQL,架构,java,开发语言)