NULL 처리중급

NULLIF

두 값이 같으면 NULL, 다르면 첫 번째 값을 반환

정의

NULLIF(a, b)는 a = b이면 NULL을, 아니면 a를 반환한다. ANSI 표준 함수. 0으로 나누기 방지(분모를 NULLIF(b, 0)으로 감싸기), 특정 값을 NULL로 변환하기 등에 쓰인다. CASE WHEN a = b THEN NULL ELSE a END와 동일하다.

왜 중요한가?

"0으로 나눠서 ORA-01476 오류" 를 깔끔하게 막을 수 있다. 분모를 NULLIF(b, 0)으로 감싸면 0일 때 NULL을 반환하고, NULL과의 산술은 NULL이 되어 오류 없이 통과한다.

틀리기 쉬운 포인트

  • !NULLIF는 a = b일 때 NULL을 반환합니다(a를 NULL로 만드는 것).
  • !CASE WHEN a = b THEN NULL ELSE a END와 동일합니다.
  • !인덱스 컬럼을 NULLIF로 감싸면 인덱스가 막힙니다.

예시

  -- 0 나누기 방지
SELECT a, b, a / NULLIF(b, 0) AS ratio
FROM measurements;

성능 포인트

!단순 비교라 비용은 작다. 인덱스 컬럼을 NULLIF로 감싸면 인덱스 활용이 막히므로 SELECT 절에서만 사용 권장.

관련 개념

관련 카테고리