ORACLE单行函数与多行函数之六:通用函数示例
主要实验了几个常用的判断NULL值及DECODE的函数。
1.NVL(a,b):判断A字段的内容为null时,运算结果为指定的值。A不为NULL,则显示A的值。
如果COMM的值为NULL,则返回显示为200.
BYS@bys1>Select COMM,NVL(COMM,200) From EMP where rownum<3;
COMM NVL(COMM,200)
---------- -------------
200
300 300
2.NVL2(a,b,c):如果第一个表达式a的值不为null,显示表达式2的值;如果a为null,显示表达式C的值。
如果comm值不为NULL,返回678;如果为NULL,返回999.
BYS@bys1>select sal,comm,nvl2(comm,678,999) from emp where rownum<5;
SAL COMM NVL2(COMM,678,999)
---------- ---------- ------------------
800 999
1600 300 678
1250 500 678
2975 999
3.NULLIF:如果前后两个表达式的内容相等的,那就返回null,否则,返回第一个表达式的值
如果工资sal=3000,则返回NULL值。
BYS@bys1>select sal,ename,nullif(sal,3000) from emp order by 1 desc;
SAL ENAME NULLIF(SAL,3000)
---------- ---------- ----------------
5000 KING 5000
3000 FORD
3000 SCOTT
2975 JONES 2975
2850 BLAKE 2850
2450 CLARK 2450
1600 ALLEN 1600
1500 TURNER 1500
1300 MILLER 1300
1250 WARD 1250
1250 MARTIN 1250
1100 ADAMS 1100
950 JAMES