2013/08/27

09-07.Sing-Row Functions【NVL, NVL2, NULLIF, COALESCE 】

■NVL
 -NVL関数はNULL値を他の値に替える時に使用、全てのデータタイプに適用可能

--マネージャーがない値を0に替えて出力
SQL> SELECT empno, NVL(mgr, 0) mgr
  2  FROM emp
  3  WHERE deptno = 10;

     EMPNO        MGR
---------- ----------
      7782       7839
      7839          0
      7934       7782



■NVL2
 -NVL2はNVLとDECODEの概念を合わせた関数
 -NVL2(expr, expr1, expr2)
 -expr値がNULLじゃない場合、expr1を返し、NULLの場合はexpr2を返す

--マネージャーがいる場合は1を無ければ2を出力する例
SQL> SELECT empno, NVL2(mgr, 1, 0) mgr
  2  FROM emp
  3  WHERE deptno = 10;

     EMPNO        MGR
---------- ----------
      7782          1
      7839          0
      7934          1



■NULLIF
 -NULLIF(expr1, expr2)
 -expr1とexpr2が同じならNULLを返し、違うならexpr1を返す
 -CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END


■COALESCE
 -COALESCE(expr1, expr2, expr3, .....)
 -expr1がNULLじゃないならexpr1を返し、NULLならCOALESCE(expr2, expr3, .....)値を返す
 -NVL関数と似ている

SQL> SELECT COALESCE(comm, 1) ,comm FROM emp;

COALESCE(COMM,1)       COMM
---------------- ----------
               1
             300        300
               1
            1400       1400
               1
               1
               1
               1
               0          0
               1
               1
               1
               1
               1
               1

15行が選択されました。


0 件のコメント:

コメントを投稿

QLOOKアクセス解析