010. NVL, NVL2, NULLIF, COALESCE

IRISH·2024년 3월 4일
0

Oracle

목록 보기
12/17
post-thumbnail
  • 학습일자 : 2024.02.28

NVL

  • NVL 함수는 NULL 값을 다른 값으로 바꿀 때 사용하며, 모든 데이터 타입에 적용이 가능하다.
-- 매니저가 없는 값을 0으로 바꾸어서 출력하는 예제.
SELECT empno, NVL(mgr, 0) mgr
  FROM emp  
 WHERE deptno = 10;
 
EMPNO      MGR
------- -------
  7782    7839
  7839       0
  7934    7782

NLV2

  • 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
               1  

참고

느낀점

NVL이나 NULLIF 함수는 많이 사용했다. 하지만, NVL2나 COALESCE는 사용 해본 적이 없는데, 앞으로도 딱히 사용할 경우는 많이 있을 것 같지 않다.

profile
#Software Engineer #IRISH

0개의 댓글