DB/Oracle

[Oracle] NVL, DECODE, COALESCE

junnnhhh 2025. 10. 16. 20:29
728x90

이슈)

오늘은 쿼리 분석 중에 NVL 함수가 있었는데, 인자가 한개가 아닌 두개가 있었다.

순간 뭐지.. 라고 고민을 했기에 이렇게 정리를 해본다... DECODE와 COALESECE 함수는 덤으로 정리한다!

 

NVL 함수

→ 컬럼 값이 NULL 일 경우, 지정한 값으로 치환해 준다. (NULL 이 아니면 원래 값을 그대로 반환)

NVL(컬럼명, 대체값)

※ 데이터 타입 일치 필요 : 첫번째 인자와 두번째 인자는 동일하거나 호환 가능한 타입이어야 함.

 

DECODE 함수

→ 조건 비교 후 값 반환 ( 간단한 IF-ELSE 또는 CASE WHEN 역할 가능)

DECODE(표현식, 비교값1, 반환값1, 비교값2, 반환값2, ..., 기본값)
  • 표현식이 각 비교값과 일치하면 해당 반환값 반환
  • 아무것도 일치하지 않으면 마지막 기본값 반환 (기본값 생략 시, NULL 반환)

COALESCE 함수

→ 여러 인자 중에서 NULL이 아닌 첫 번째 값을 반환

→ NVL은 인자가 2개지만, COALESCE는 여러 인자를 넣을 수 있음.

COALESCE(값1, 값2, 값3, ...)
  • 왼쪽부터 차례대로 확인해서 NULL이 아닌 첫 번째 값을 반환
  • 모든 값이 NULL이면 NULL 반환
728x90