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 관련 흔한 실수
- WHERE col != 'value' 조건에서 NULL 값이 모두 빠진다.
- JOIN 시 NULL 값이 있는 키 컬럼에서 매칭이 되지 않아 누락되는 데이터 발생
- GROUP BY 시 NULL 그룹이 따로 생성되며 의도치 않게 집계가 분리됨
이러한 실수를 피하려면, 데이터에 NULL이 포함될 수 있음을 항상 염두에 두고 쿼리를 작성해야 합니다.
마무리하며
NULL은 단순히 값이 없는 것이 아니라, 존재하지 않음의 상태입니다. 이로 인해 연산이나 조건에서 예상치 못한 결과를 만들 수 있으므로, COALESCE, IS NULL 같은 전략을 잘 활용하여 꼼꼼히 처리해야 합니다.
[SQL 쿡북] https://link.coupang.com/a/cp14TA
SQL 쿡북:모든 SQL 사용자를 위한 쿼리 완벽 가이드 - 프로그래밍 언어 | 쿠팡
쿠팡에서 SQL 쿡북:모든 SQL 사용자를 위한 쿼리 완벽 가이드 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 프로그래밍 언어 제품도 바로 쿠팡에서 확인할 수 있습니다.
www.coupang.com
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
'빅데이터 관련 자료 > [SQL] Basic' 카테고리의 다른 글
SQL 윈도우 함수 (Window Functions) 완전 정복 (0) | 2025.05.01 |
---|---|
ALTER TABLE 로 제약 조건 추가하기 (CHECK / FOREIGN KEY) 쉽게 이해하기 (1) | 2025.05.01 |
인덱스(Index)의 작동 원리와 성능 이슈 (1) | 2025.04.29 |
SQL에서 DDL과 JOIN은 어떻게 다를까? (1) | 2025.04.28 |
서브쿼리 vs CTE (Common Table Expressions), 뭐가 다를까? (0) | 2025.04.27 |