ORACLE SQL NULL값 처리 방법(NVL)
오라클 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 함수를 사용하여 같은 결과를 출력할 수 있지만, 용도에 맞는 명시적인 함수를 사용하는 것이 좋다.
------------------------------------------------------------------------------------------------------------------------