Oracle基础(空值)

本文介绍了一种在SQL中正确处理员工薪资计算的方法,当奖金字段存在空值时,使用NVL函数确保计算不会返回空值。通过实例展示了如何避免因空值导致的计算错误。

计算出所有员工月收入,包括工资和奖金,查询表所有数据得知部分列中有空值,

错误的写法是

SELECT ename,salary,bonus,salary+bonus 总工资

FROM emp_test;

可以看到,有些员工虽然没有奖金BONUS,但是应该还是有基本工资的,上面的写法忽略了空值,空值是无效的,没有意义的,未指定的或不可预知的值,空值不是空格或者0,包含空值的数学表达式的值都为空值,所以有些员工的工资变成了空值,正确的写法应该是

SELECT ename,salary,bonus,salary+nvl(bonus,0) 总工资

FROM emp_test

此时如果没有奖金的员工工资也计算出来了,用的是nvl(m,n)函数,如果m等于空,那么返回n,上面的例子如果员工奖金等于null,那么就返回0,员工的工资加0就不会还是空值了。

总结:

  1. 空值和任何数据做算数运算,结果都是null;
  2. 空值和字符串类型做连接操作,结果相当于空值不存在;
  3. NVL函数可以将空值转换为一个已知的值,可以使用的数据类型有:日期、字符、数字。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值