[Oracle] 오라클 NVL, NVL2 함수 사용방법 (null, 공백, 치환)
- 데이터베이스/오라클
- 2018. 12. 10.
오라클 NVL, NVL2 함수 사용법
해당 칼럼의 값이 NULL 값인 경우 특정값으로 출력하고 싶으면 NVL 함수를 사용하고, NULL 값이 아닐 경우 특정값으로 출력하고 싶으면 NVL2 함수를 사용하면 된다.
NVL 함수
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 함수
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 함수를 사용하여 같은 결과를 출력할 수 있지만, 용도에 맞는 명시적인 함수를 사용하는 것이 좋다.
DECODE 함수 사용 예제
사용 예제
▲ 원본 데이터
▲ COMM 칼럼이 NULL인 경우 "0"으로 표시
▲ MGR 칼럼에 값이 있을 경우 "Y"로 표시