SQL中有一条规则:只要有NULL参与的运算其运算结果一定是NULL
以下通过实例来理解这条规则;
现有一张员工信息表(emp),包括了员工姓名(ENAMA)、职位(JOB)、薪资(SAL)、补贴(COMM)等相关信息,注意COMM字段中存在NULL。
查看员工薪资:
计算员工的年薪(包括补贴COMM):
可以看到加上补贴之后,部分员工的年薪是NULL,这个运算结果明显不符合实际,原因在于COMM字段中存在NULL,SQL规定有NULL参与的运算其结果也为NULL。
像上述中计算员工年薪的函数即为“单行处理函数”,单行处理函数的特点是:输入一行,处理一行,处理对象是每一行。
解决单行处理函数空值问题的方法是:ifnull() 函数
使用 ifnull 函数需要传入两个参数:
ifnull(可能出现空值的数据,出现空值时指定被当作什么值处理)
有单行处理函数,对应的也有分组函数—别名“多行处理函数”(count、sum、max、min、avg)。
分组函数无需担心空值问题,SQL规定分组函数自动忽略NULL。
如查看员工津贴(comm)总和:
select sum(comm) from emp where comm is not NULL;
也能实现上述相同效果,但是没有必要进行关于“是否为NULL”的判断