mysql——’null’空的值对计算的影响

在mysql中如果null值参与计算结果一定为null。
假设有如下表emp:
name | sal | comm |
蒙甲成 | 2000 | 200 |
绿新云 | 2100 | 300 |
木奇 | 3100 | 500 |
陈双百 | 2500 | 500 |
邓炎峰 | 2600 | 400 |
钟疯 | 800 | null |
陈松 | 2500 | 300 |
假设我现在要计算每个人的年薪,需要计算(薪资+奖金)*12月。
select name,(sal+comm)*12 salary from emp;
此sql查询的结果中其余员工年薪显示正常,员工钟疯的年薪计算结果会显示为null。
因为在mysql中如果null值参与数学计算结果一定为null。
为了预防这种现象的发生,需要用 ifnull 空值处理函数预先处理。
select name,(sal+ifnull(comm,0))*12 salary from emp;
语句如上,结果可以正常显示,员工钟疯的年薪为9600。
ifnull(参数1,参数2)
参数1为需要处理的字段,
参数2为如果结果为空时,将该值,当作此参数,
如ifnull(comm,0) 意思时假设字段comm的值为空时,将该值当作0.
那么问题来了?聚合函数会怎么处理为null
会自动忽略null
min,max:null不会被当作最小值,上表如果查询min(comm),会显示200,除非所有值都为null,否则不会显示null
sum:会计算其他所以值的和,上表查询显示2200
count:null会被忽略,如果查询count(*)会显示7,如果查询count(comm)会显示6
avg:null会被忽略,如果查avg(comm),会计算2200/6结果会显示366.66
shit!!!
fuck!!!