홈 › SQL 중급 › 06 / 11

NULL 처리 함수

NVL·IFNULL·ISNULL·COALESCE·NULLIF
섹션 6진행 0 / 11

6. 정리

NVL(Oracle·Tibero)·IFNULL(MySQL)·ISNULL(MSSQL)은 이름과 문법이 각각 다른 NULL 대체 함수이고, COALESCE 는 네 DB 모두 지원하는 표준이라 여러 인자와 단락 평가까지 지원합니다. NULLIF 는 반대로 특정 값(보통 0)을 NULL 로 바꿔 나눗셈 오류를 막는 관용구로 씁니다.

COUNT(*)·COUNT(컬럼)·AVG 같은 집계 함수는 NULL 을 계산에서 제외하므로 COALESCE 로 NULL 을 채우면 결과가 달라집니다. ORDER BY 의 NULL 기본 위치는 Oracle 만 마지막이고 MySQL·MSSQL 은 처음이며, NULLS FIRST·NULLS LAST 는 Oracle 과 H2 만 지원합니다.

가장 헷갈리기 쉬운 함정은 이름이 같은 ISNULL 입니다. MySQL 의 ISNULL(x) 은 인자 1개짜리 판별 함수이고 MSSQL 의 ISNULL(a, b) 는 인자 2개짜리 대체 함수로, 완전히 다른 함수라는 점과 MSSQL 의 ISNULL 이 첫 인자 타입을 따라 결과가 잘릴 수 있다는 점을 기억해야 합니다.