개발 기록/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는 세 개의 파라미터를 사용하며, 값의 존재 여부에 따라 두 가지 조건으로 다른 값을 반환할 수 있다!