日期:2014-05-16  浏览次数:20596 次

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