koos808

ORACLE SQL NULL값 처리 방법(NVL) 본문

SQL(MySQL˙Oracle˙SqlDbx˙Orange)

ORACLE SQL NULL값 처리 방법(NVL)

koos808 2023. 9. 20. 12:02
728x90
반응형

오라클 NULL값 처리하는 함수인 NVL, NVL2 함수에 대한 설명입니다.

※  NVL : 해당 칼럼의 값이 NULL 값인 경우 특정값으로 출력

              : NVL("값", "NULL값인 경우 변경할 값")

※  NVL2 : NULL 값이 아닐 경우 특정값으로 출력

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

              : NVL2("값", "NULL이 아닌 경우 변경할 값", "NULL인 경우 변경할 값) // NVL2("값", "NOT NULL", "NULL") 

 

 

---- 세부 설명

※ 1)  NVL : 해당 칼럼의 값이 NULL 값인 경우 특정값으로 출력

              : NVL("값", "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      
     , NVL(comm, 0) AS comm2 --comm 값이 NULL 이면 '0'으로 변경   
  FROM emp

 

 

※  2) NVL2 : NULL 값이 아닐 경우 특정값으로 출력

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

              : NVL2("값", "NULL이 아닌 경우 변경할 값", "NULL인 경우 변경할 값) // 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 --comm 값이 있으면 'Y' 없으면 'N' 
  FROM emp

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

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

 

 

 

 

------------------------------------------------------------------------------------------------------------------------

728x90
반응형
Comments