NULL 처리입문Oracle 전용

NVL

Oracle 전용. 값이 NULL이면 대체값을 반환

정의

NVL(값, 대체값) 형식. 값이 NULL이면 대체값을, 아니면 원래 값을 그대로 반환한다. 예: NVL(commission, 0)은 commission이 NULL일 때 0으로 바꿔준다. Oracle 전용이라 다른 DB에서는 동작하지 않는다. 인자는 항상 2개만.

왜 중요한가?

오라클로 작성된 기존 코드에서 가장 흔히 보이는 NULL 처리 함수. 다만 신규 코드는 표준 함수인 COALESCE를 쓰는 게 좋다 — 다른 DB에서도 동작하고, 인자도 여러 개 받을 수 있어 더 유연하다.

틀리기 쉬운 포인트

  • !NVL은 두 인자를 모두 평가합니다. COALESCE는 short-circuit입니다.
  • !NVL은 Oracle 전용이며 ANSI 표준이 아닙니다.
  • !두 인자의 데이터 타입이 다르면 묵시적 변환이 일어나 성능 저하 가능.

예시

  -- Oracle 전용
SELECT name, NVL(commission, 0) AS commission
FROM employees;

성능 포인트

!NVL은 두 인자를 모두 평가. 두 번째 인자가 비싼 연산이면 COALESCE 또는 CASE를 고려하라.

관련 개념

관련 카테고리