您的位置:首页 > 数据库 > MySQL

Mysql系列(一):含逻辑处理的sql语句,如查询结果为null的转为0

2019-06-28 11:05 756 查看
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

将null转为0

在Java程序中调用sql语句时,如果返回结果是null,是非常容易引发程序抛出空指针异常的。

单字段结果由null转0

1、普通sql:

// 返回结果:null
SELECT  price FROM goods WHERE name='light';

2、IFNULL包含单个字段:

// 返回结果:0
SELECT IFNULL(price,0) price FROM goods WHERE name='light';

但使用IFNULL语句,如果where条件中的name值是不存在的,那么仍将返回null,例如:
3、IFNULL包含整个sql

// 返回结果:null
SELECT IFNULL(price,0) price FROM goods WHERE name='aaa';

这时候,需要改写成下面的形式:

// 返回结果:0
SELECT IFNULL((SELECT price FROM goods WHERE name='aaa'),0) price;

在实际应用中,如果你确定where条件的值一定存在,使用写法2就可以了,否则要用写法3。

聚合结果由null转0

// 返回结果:0
SELECT IFNULL(SUM(price),0) FROM goods WHERE status=3;

其他,AVG、COUNT等用同样方式处理,而且,无论wher条件存在不存在,结果都是会返回0的。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: