개발 기록/ORACLE
[오라클] NVL과 NVL2의 차이점
추리덕후 남도일
2025. 3. 17. 22:09
항상 사용하지만 사용하려고 할 때마다 어떻게 사용했지?라는 생각이 들어
이제부터 정리해 본다.
✅ NVL, NVL2이란??
"Null VaLue"라는 축약의 형태로 NVL이라고 부른다.
NVL,NVL2 함수는 윈도우 함수(Window Function)가 아니며,
일반적인 단일행 함수 (Single-Row Function)에 속한다.
NULL을 처리하기 위해 사용되는 함수다.
"그래서 차이점이 도대체 무엇인데??"
✅ NVL, NVL2 차이점
📌 1. NVL함수
- 형식 : NVL(값1, 값2)
- 값1이 NULL이면 값2를 반환하고, 아니면 값1을 반환한다.
SELECT NVL(NULL, '대체값') FROM dual; -- 값이 없네 ? 결과: '대체값'
SELECT NVL('원본값', '대체값') FROM dual; -- 값이 있네! 결과 : '원본값'
📌 2. NVL2함수
- 형식 : NVL2(값1, 값2, 값3)
- 값1이 NULL이 아니면 값2를 반환하고, NULL이면 값3를 반환한다.
SELECT NVL2(NULL, '값있음', '값없음') FROM dual; -- 값이 없네? 결과 : '값없음'
SELECT NVL2('원본값', '값있음', '값없음') FROM dual; -- 값이 있네! 결과 : 값있음'
🚀 결론!
함수 | 문법 | 설명 |
NVL | NVL(값1, 값2) | 값1이 NULL이면 값2 반환 |
NVL2 | NVL2(값1, 값2, 값3) | 값1이 NULL이 아니면 값2 반환, NULL이면 값3으로 반환 |
- NVL은 두 개의 파라미터만 사용하여, 값이 NULL일 때만 특정 값을 반환한다.
- NVL2는 세 개의 파라미터를 사용하며, 값의 존재 여부에 따라 두 가지 조건으로 다른 값을 반환할 수 있다!