핵심 원리
NVL
함수는 SQL에서 NULL 값을 다른 값으로 대체하는 데 사용됩니다. 만약 특정 컬럼의 값이 NULL일 경우, NVL
함수는 지정한 다른 값을 반환합니다. 이로 인해 NULL 값이 계산식이나 데이터 표시에서 예상치 못한 결과를 초래하지 않도록 할 수 있습니다.
NVL2
함수는 NULL 처리에 대해 조금 더 복잡한 로직을 제공하며, 첫 번째 인수가 NULL이 아닐 경우 두 번째 인수를 반환하고, NULL일 경우 세 번째 인수를 반환합니다.
실무에서 쓰이는 이유
NVL
및 NVL2
함수는 데이터베이스에서 NULL 값이 포함된 데이터를 처리할 때 매우 유용합니다. 특히 보고서 생성이나 데이터 분석 시 NULL 값으로 인해 발생할 수 있는 오류를 방지하고, 대신 특정 기본값으로 대체하여 일관된 데이터를 제공할 수 있습니다. 실무에서는 급여 계산이나, 인센티브 등의 데이터에 NULL 값이 포함될 때, 이 함수들을 이용해 데이터를 안정적으로 처리합니다.
연습 문제
- 아래 SQL 쿼리를 실행해보고,
NVL
함수가 어떻게 작동하는지 확인하세요:
SELECT ename, comm, NVL(comm, 0)
FROM emp;
SAL + COMM
을 계산할 때,COMM
이 NULL인 경우를 처리하는 쿼리를 작성하세요.
연습 문제 해답
NVL
함수를 이용해COMM
값이 NULL인 경우 0으로 출력합니다.
SELECT ename, comm, NVL(comm, 0)
FROM emp;
출력 결과:
ENAME | COMM | NVL(COMM, 0) |
---|---|---|
KING | NULL | 0 |
BLAKE | NULL | 0 |
CLARK | NULL | 0 |
JONES | NULL | 0 |
MARTIN | 1400 | 1400 |
ALLEN | 300 | 300 |
SAL + COMM
계산 시COMM
이 NULL인 경우 0으로 처리하여 계산합니다.
SELECT ename, sal, comm, NVL(comm, 0), sal + NVL(comm, 0)
FROM emp
WHERE job IN ('SALESMAN', 'ANALYST');
응용 문제
NVL2
함수를 사용하여,COMM
이 NULL이 아닐 경우SAL + COMM
을 출력하고, NULL일 경우SAL
을 출력하는 쿼리를 작성하세요.
응용 문제 해답
NVL2
함수를 이용하여 다음과 같이 쿼리를 작성할 수 있습니다:
SELECT ename, sal, comm, NVL2(comm, sal + comm, sal)
FROM emp
WHERE job IN ('SALESMAN', 'ANALYST');
출력 결과:
ENAME | SAL | COMM | NVL2(COMM, SAL+COMM, SAL) |
---|---|---|---|
MARTIN | 1250 | 1400 | 2650 |
ALLEN | 1600 | 300 | 1900 |
TURNER | 1500 | NULL | 1500 |
WARD | 1250 | 500 | 1750 |
FORD | 3000 | NULL | 3000 |
SCOTT | 3000 | NULL | 3000 |
실무 유형 문제
- 직원 테이블에서
COMM
이 NULL인 경우 0으로 변환한 후, 전체 직원의 급여와 커미션의 합을 계산하는 SQL 쿼리를 작성하세요.
실무 유형 문제 해답
- 다음과 같은 SQL 쿼리를 작성할 수 있습니다:
SELECT ename, sal, comm, NVL(comm, 0), sal + NVL(comm, 0) AS total_compensation
FROM emp;