5.7. NVL, NVL2, NULLIF, COALESCE

2019. 4. 18. 23:52 Database/Oracle SQL

NVL

NVL 함수는 NULL 값을 다른 값으로 바꿀 때 사용하며, 모든 데이터 타입에 적용이 가능하다.

-- 매니저가 없는 값을 0으로 바꾸어서 출력하는 예제.
SELECT empno, NVL(mgr, 0) mgr
  FROM emp 
 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을 없는경우 0을 출력하는 예제이다.
    SELECT empno, NVL2(mgr, 1, 0) mgr
      FROM emp 
     WHERE deptno = 10;
     
    EMPNO        MGR
    ------- ----------
      7782          1
      7839          0
      7934          1

NULLIF

  • NULLIF(exp1, exp2)
  • - exp1값과 exp2값이 동일하면 NULL을 그렇지 않으면 exp1을 반환
  • CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

COALESCE

  • COALESCE(expr1,expr2,expr3,…)
  • - expr1이 NULL이 아니면 expr1값을 그렇지 않으면 COALESCE(expr2,expr3,…)값을 반환.
  • NVL 함수와 비슷하다.
  • -- 아래 문장을 실행해 보자.
    SELECT COALESCE(comm,1), comm
      FROM emp;
     
     
    COALESCE(COMM,1)       COMM
    ---------------- ----------
                   1
                 300        300
                 500        500
                   1
                1400       1400
                   1
                   1
                   1
                   0          0
                   1
                   

출처 : http://www.gurubee.net/lecture/1880

'Database > Oracle SQL' 카테고리의 다른 글

7.2. Single-Row Subquery  (0) 2019.04.18
7.1. Subquery란?  (0) 2019.04.18
6.2. GROUP BY와 HAVING절  (0) 2019.04.18
6.1. 집계함수(Aggregate function)란?  (0) 2019.04.18
5.6. DECODE와 CASE  (0) 2019.04.17
5.5. 기타 함수들  (0) 2019.04.17
5.4. Conversion Functions (변환 함수)  (0) 2019.04.17
5.3. Datetime Functions (날짜 함수)  (0) 2019.04.17