SELECT 결과에 NULL이 있으면 사용자에게 의미 없는 결과가 표시될 수 있는데, NVL, NVL2, DECODE 를 사용하여 처리 가능
🧊 NVL – NULL일 경우 기본값으로 대체함
NVL(expr1, expr2)
- expr1이 NULL이면 expr2 반환
- NULL이 아니면 expr1 반환
✅ 예제
SELECT NVL(FREEZER_YN, 'N') AS FREEZER_YN
FROM FOOD_WAREHOUSE;
냉동시설 여부가 NULL인 경우 ‘N’으로 표시되도록 처리했음
🧪 NVL2 – NULL 여부에 따라 다른 값 반환함
NVL2(expr1, expr2, expr3)
- expr1이 NULL이 아니면 expr2
- NULL이면 expr3 반환
✅ 예제
SELECT NVL2(FREEZER_YN, '냉동가능', '냉동불가') AS 상태
FROM FOOD_WAREHOUSE;
값이 존재할 경우 ‘냉동가능’, 없을 경우 ‘냉동불가’로 분기했음
🔄 DECODE – 조건값에 따라 분기하는 Oracle 전용 CASE 문
DECODE(expr, val1, res1, val2, res2, ..., default)
- expr이 val1이면 res1
- 일치하는 조건이 없을 경우 마지막 default 값 반환 가능
✅ 예제
SELECT DECODE(FREEZER_YN, 'Y', '냉동가능', 'N', '냉동불가', '정보없음') AS 상태
FROM FOOD_WAREHOUSE;
FREEZER_YN 값에 따라 문구 출력 달리했음
Y → 냉동가능 / N → 냉동불가 / NULL 또는 기타 → 정보없음
📋 정리 요약
함수 설명 특징
| NVL | NULL을 특정값으로 대체 | 단순 대체 |
| NVL2 | NULL 여부로 2가지 값 분기 | if NULL else 문장과 유사 |
| DECODE | 여러 조건에 따라 결과 분기 | 다중 분기, Oracle 전용 IF문 대체 |
'DB > Oracle - SQL' 카테고리의 다른 글
| Oracle SQL | TO_DATE로 날짜 왜곡되는 이유와 해결법 (0) | 2025.05.08 |
|---|---|
| Oracle SQL | TO_DATE로 날짜 필터링할 때 오류 방지하는 방법 (0) | 2025.05.06 |
| Oracle SQL | WHERE 절에 조건 여러 개 쓰는 법 (AND, OR, BETWEEN, 괄호까지) (1) | 2025.05.06 |
| Oracle SQL | SQL 실행 순서 (0) | 2025.05.06 |
| Oracle SQL | 가장 최근에 들어온 데이터 1개 or n개만 뽑고 싶을 때 (0) | 2025.05.06 |