SQL-单行处理函数的空值问题(NULL)及处理方法 IFNULL()

本文介绍了SQL中NULL值参与运算导致结果为NULL的问题,并通过员工信息表举例,展示了如何使用IFNULL函数解决单行处理函数中的空值问题。此外,还提及了分组函数在处理多行数据时自动忽略NULL的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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”的判断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值