NULL 처리입문

COALESCE

여러 값 중 NULL이 아닌 첫 번째 값을 반환하는 함수

정의

왼쪽부터 차례로 인자를 검사해서 NULL이 아닌 첫 번째 값을 돌려준다. 모두 NULL이면 NULL을 반환. 인자는 2개든 5개든 자유롭게 넣을 수 있다. 예: COALESCE(휴대폰, 집전화, 회사전화, "연락처 없음") 하면 가장 먼저 채워진 연락처를 보여준다.

왜 중요한가?

NULL을 다른 값(기본값)으로 바꿀 때 가장 표준적인 함수. 비슷한 함수로 NVL(Oracle 전용), IFNULL(MySQL 전용)이 있지만 COALESCE는 모든 데이터베이스에서 동작하므로 신규 코드는 COALESCE를 쓰는 게 좋다.

틀리기 쉬운 포인트

  • !COALESCE는 short-circuit 평가지만, 인덱스 컬럼을 감싸면 인덱스가 막힙니다.
  • !모든 인자가 NULL이면 결과도 NULL입니다.
  • !인자들의 데이터 타입이 호환되지 않으면 묵시적 변환 또는 오류가 발생합니다.

예시

SELECT name, COALESCE(mobile, home_phone, office_phone, '연락처 없음') AS contact
FROM customers;

성능 포인트

!WHERE인덱스 컬럼에 함수 적용은 피하라. COALESCE는 SELECT 절에서 사용 권장.

관련 개념

관련 카테고리