
오라클의 내장 함수 중 컬럼의 값이 NULL인 경우에 대한
처리를 해주는 NVL과 NVL2 함수가 있다.
이 함수들은 오라클에서만 사용이 가능하고,
다른 데이터베이스에서는 사용할 수 없다.
이 두 개의 함수의 차이점과 사용법에 대하여 알아보자.
1) NVL, NVL2 함수 차이점
: NVL 함수는 컬럼의 값이 NULL인 경우,
특정 값으로 반환하기 위해 사용한다.
NVL2 함수는 컬럼의 값이 NULL인 경우와 NULL이 아닌 경우
두 가지 모두 특정 값으로 반환할 수 있다는 차이점이 있다.
NVL 함수는 NULL인 경우 단순 기본값을 부여하기 위해서 자주 사용하며,
NVL2 함수는 NULL을 기준으로 IF ELSE문처럼 특정 값을 반환할 수 있다.
2) NVL 함수
2-1) 문법
: NVL(NULL인지 검사할 데이터 또는 컬럼, NULL일 경우 반환할 값)
2-2) 예시
아래 PRODUCT_TABLE 테이블을 예시로 설명해보겠다.

※ 참고: 위 테이블은 아래 쿼리로 임시 테이블을 구성한 것이다.
WITH PRODUCT_TABLE AS (
SELECT 'APPLE' AS PRODUCT, 10 AS QUANTITY FROM DUAL
UNION ALL
SELECT 'ORANGE' AS PRODUCT, 3 AS QUANTITY FROM DUAL
UNION ALL
SELECT 'GRAPE' AS PRODUCT, NULL AS QUANTITY FROM DUAL
UNION ALL
SELECT 'BANANA' AS PRODUCT, 5 AS QUANTITY FROM DUAL
UNION ALL
SELECT 'ONION' AS PRODUCT, NULL AS QUANTITY FROM DUAL
)
아래 예시는 상품의 수량이 NULL인 경우 0으로 출력하도록 작성한 쿼리이다.
SELECT PRODUCT, -- 상품
NVL(QUANTITY, 0) AS PROD_QUANTITY -- 수량
FROM PRODUCT_TABLE;
결과값

3) NVL2 함수
3-1) 문법
NVL2(NULL인지 검사할 데이터 또는 컬럼, NULL이 아닐 경우 반환할 값, NULL일 경우 반환할 값)
3-2) 예시
아래 예시는 상품의 수량이 NULL이 아닐 경우 Y를,
NULL인 경우 N을 출력하도록 작성한 쿼리이다.
SELECT PRODUCT, -- 상품
NVL2(QUANTITY, 'Y', 'N') AS SALE_FLAG -- 판매여부
FROM PRODUCT_TABLE;
결과값

[reference]
https://infjin.tistory.com/138
https://gent.tistory.com/613
'DataBase > Oracle' 카테고리의 다른 글
[Oracle] 특정 문자로 자릿수 채우기 LPAD, RPAD 함수 (0) | 2025.06.03 |
---|---|
[Oracle] 오라클 소수점 존재 여부 체크 및 소수점 이하 값 구하기 (0) | 2025.06.02 |
[Oracle] 오라클 CASE WHEN 표현식 사용법(if else문) (0) | 2025.05.31 |
[Oracle] 조건문을 제공하는 DECODE 함수(if else문) (0) | 2025.05.30 |
[Oracle] 오라클 순번 매기기 함수(ROWNUM, ROW_NUMBER) (0) | 2025.05.29 |