通过is/not is来判断
null的计算
任何数字和null计算,结果为null
需要对null进行处理:null->0
nvl:if
nvl(comm,0)
nvl2:if .....else
nvl2(comm,val,0) if(comm==null) return 0 else return val
1、使用nvl(expr1,expr2) 处理NULL值
解释该函数:nvl函数可以将expr1为空时,则返回expr2;不为空时,则返回expr1。
需要注意的是:参数expr1和expr2可以是任意数据类型,但二者的数据类型必须要匹配。
SQL> SELECT ename,sal,comm,sal+nvl(comm,0) AS 月收入 from emp;
ENAME SAL COMM 月收入
-------------------- ---------- ---------- ----------
SMITH 800 800
ALLEN 1600 300 1900
WARD 1250 500 1750
JONES 2975 2975
MARTIN 1250 1400 2650
BLAKE 2850 2850
CLARK 2450 2450
SCOTT 3000 3000
KING 5000 5000
TURNER 1500 0 1500
ADAMS 1100 1100
2、使用nvl2(expr1)处理NULL值
解释该函数:nvl2是Oracle9i新增加的函数,该函数也用于NULL。格式为NVL2(expr1,expr2,expr3)。如果expr1不是null,则返回expr2;如果expr1为null,则返回expr3。
其中,expr1可以是任意数据类型,而expr2和expr3可以是除LONG之外的任何数据类型。同样需要注意的是,expr2和expr3的数据类型必须要和expr1的数据类型匹配。
SQL> SELECT ename,nvl2(comm,sal+comm,sal) FROM emp;
ENAME NVL2(COMM,SAL+COMM,SAL)
-------------------- -----------------------
SMITH 800
ALLEN 1900
WARD 1750
JONES 2975
MARTIN 2650
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
TURNER 1500
ADAMS 1100