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

Chentwo 2

在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


Comments 2

发表回复