NULL 처리의 함정과 COALESCE, IS NULL 전략
잡학다식의 지식공방

IT/[SQL] Basic

NULL 처리의 함정과 COALESCE, IS NULL 전략

carpe08 2025. 4. 30. 19:58
320x100

NULL 처리의 함정과 COALESCE, IS NULL 전략

SQL을 다루다 보면 무심코 지나칠 수 있는 것이 바로 NULL입니다. 그러나 이 NULL이라는 존재는 예상치 못한 결과를 만들며 우리를 당황하게 할 수 있습니다. 오늘은 NULL 처리의 함정과 함께, 이를 다루는 대표적인 전략인 COALESCE, IS NULL에 대해 알아보겠습니다.


왜 NULL 처리가 중요한가?

NULL은 단순한 '빈 값'이 아닙니다. '값이 없음'을 의미하는 특수한 상태이기 때문에 일반적인 비교 연산이나 산술 연산이 불가능합니다.

SELECT 1 + NULL;  -- 결과는 NULL
SELECT NULL = NULL;  -- 결과는 FALSE가 아닌 UNKNOWN

이처럼 NULL은 우리가 흔히 기대하는 동작과 다르게 반응하기 때문에, 데이터 분석이나 조건 필터링 시 의도치 않은 결과를 만들 수 있습니다.


NULL 처리 전략 1: COALESCE

COALESCE는 NULL을 대체할 수 있는 매우 유용한 함수입니다. 첫 번째로 NULL이 아닌 값을 반환합니다.

SELECT COALESCE(NULL, 0);  -- 결과는 0
SELECT COALESCE(NULL, NULL, 'default');  -- 결과는 'default'

주로 아래와 같은 상황에서 유용합니다:

  • SUM, AVG 등의 집계 결과가 NULL일 경우 기본값 처리
  • 컬럼 값이 없을 때 대체 텍스트 출력

NULL 처리 전략 2: IS NULL / IS NOT NULL

조건문에서 NULL을 정확히 체크하려면 IS NULL을 사용해야 합니다. 일반적인 = 비교는 통하지 않습니다.

SELECT * FROM users WHERE deleted_at IS NULL;  -- 아직 삭제되지 않은 유저
SELECT * FROM orders WHERE discount IS NOT NULL;  -- 할인 적용된 주문

또한 CASE WHEN 문과 함께 사용하면 더욱 강력한 조건 처리가 가능합니다:

SELECT
  CASE WHEN score IS NULL THEN '미제출'
       ELSE '제출 완료'
  END AS 제출상태
FROM exam_results;

NULL 관련 흔한 실수

  1. WHERE col != 'value' 조건에서 NULL 값이 모두 빠진다.
  2. JOIN 시 NULL 값이 있는 키 컬럼에서 매칭이 되지 않아 누락되는 데이터 발생
  3. GROUP BY 시 NULL 그룹이 따로 생성되며 의도치 않게 집계가 분리됨

이러한 실수를 피하려면, 데이터에 NULL이 포함될 수 있음을 항상 염두에 두고 쿼리를 작성해야 합니다.


마무리하며

NULL은 단순히 값이 없는 것이 아니라, 존재하지 않음의 상태입니다. 이로 인해 연산이나 조건에서 예상치 못한 결과를 만들 수 있으므로, COALESCE, IS NULL 같은 전략을 잘 활용하여 꼼꼼히 처리해야 합니다.


[SQL 쿡북] https://link.coupang.com/a/cp14TA

 

SQL 쿡북:모든 SQL 사용자를 위한 쿼리 완벽 가이드 - 프로그래밍 언어 | 쿠팡

쿠팡에서 SQL 쿡북:모든 SQL 사용자를 위한 쿼리 완벽 가이드 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 프로그래밍 언어 제품도 바로 쿠팡에서 확인할 수 있습니다.

www.coupang.com

 

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

 

320x100
320x100