[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

Tags:

Categories:

Updated:

Leave a comment