본문 바로가기
카테고리 없음

오라클 NVL, NVL2 함수 사용법

by 길상여의 2023. 7. 12.

해당 컬럼의 값이 NULL 값인 경우 특정 값으로 출력하고 싶으면 NVL 함수를 사용하고, NULL 값이 아닐 경우 특정 값으로 출력하고 싶으면 NVL2 함수를 사용하면 된다.

 

NVL 함수는 값이 NULL인 경우 지정 값을 출력하고, NULL이 아니면 원래 값을 그대로 출력한다.

- 함수  :  NVL("값", "지정값")

 

WITH emp AS (

  SELECT 7839 empno, 'KING'   ename, 'PRESIDENT' job, NULL comm FROM dual UNION ALL

  SELECT 7654 empno, 'MARTIN' ename, 'SALESMAN'  job, 1400 comm FROM dual

)

 

SELECT empno

     , ename

     , comm           AS comm      

     , NVL(comm, 0) AS comm2 --커미션이 NULL 이면 '0'   

  FROM emp

 

NVL2 함수는 NULL이 아닌 경우 지정 값 1을  출력하고, NULL인 경우 지정 값 2를 출력한다.

- 함수 :  NVL2("값", "지정값1", "지정값2") // NVL2("값", "NOT NULL", "NULL")

 

WITH emp AS (

  SELECT 7839 empno, 'KING'   ename, 'PRESIDENT' job, NULL comm FROM dual UNION ALL

  SELECT 7654 empno, 'MARTIN' ename, 'SALESMAN'  job, 1400 comm FROM dual

)  

 

SELECT empno

     , ename

     , comm                 AS comm 

     , NVL2(comm, 'Y', 'N') As comm2 --커미션이 있으면 'Y' 없으면 'N' 

  FROM emp

 

 

NVL2 함수를 사용할 때 NULL이 아닌경우 자신의 값을 그대로 출력할 수도 있다.

예) NVL2(comm, comm, '보너스없음') 

 

위의 NVL, NVL2 함수를 사용하지 않고 DECODE 함수를 사용하여 같은 결과를 출력할 수 있지만, 용도에 맞는 명시적인 함수를 사용하는 것이 좋다.