[SQL] 033. NULL 값 대신 다른 데이터 출력하기
Updated:
초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.
오라클 SQL을 기반으로 합니다.
실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.
[예시]
NULL값 대신 다른 값을 출력해주는 함수로 NVL
, NVL2
를 사용 가능하다.
NVL
은 컬럼이 NULL값을 가질 때 대체 값을 지정한다.
NVL2
는 컬럼이 NULL이 아닌 경우 출력값과 NULL인 경우 출력값을 지정한다.
다음 예시는 NULL이 있는 경우 연산을 기본, NVL
, NVL2
사용 3가지로 비교한다.
-- 기본 출력
SELECT ENAME, SAL, COMM, SAL+COMM AS "연봉+커미션"
FROM EMP
WHERE JOB IN ('SALESMAN', 'ANALYST');
-- NVL 적용 (값이 변화되는 것은 아니며 출력만)
SELECT ENAME, SAL, NVL(COMM,0) AS 커미션, SAL+NVL(COMM,0) AS "연봉+커미션"
FROM EMP
WHERE JOB IN ('SALESMAN', 'ANALYST');
-- NVL2(컬럼, NULL이 아닌 경우 출력값, NULL인 경우 출력값)
SELECT ENAME, SAL, COMM, NVL2(COMM, SAL+COMM, SAL) AS VAR4
FROM EMP
WHERE JOB IN ('SALESMAN', 'ANALYST');
[결과: 기본 출력]
ENAME | SAL | COMM | 연봉+커미션 |
---|---|---|---|
MARTIN | 1250 | 1400 | 2650 |
ALLEN | 1600 | 300 | 1900 |
TURNER | 1500 | 0 | 1500 |
WARD | 1250 | 500 | 1750 |
FORD | 3000 | ||
SCOTT | 3000 |
[결과: NVL 출력]
ENAME | SAL | 커미션 | 연봉+커미션 |
---|---|---|---|
MARTIN | 1250 | 1400 | 2650 |
ALLEN | 1600 | 300 | 1900 |
TURNER | 1500 | 0 | 1500 |
WARD | 1250 | 500 | 1750 |
FORD | 3000 | 0 | 3000 |
SCOTT | 3000 | 0 | 3000 |
[결과: NVL2 출력]
ENAME | SAL | COMM | VAR4 |
---|---|---|---|
MARTIN | 1250 | 1400 | 2650 |
ALLEN | 1600 | 300 | 1900 |
TURNER | 1500 | 0 | 1500 |
WARD | 1250 | 500 | 1750 |
FORD | 3000 | 3000 | |
SCOTT | 3000 | 3000 |
Leave a comment