-
mysql 기본 NULL 처리 함수들Programing Language/SQL 2025. 6. 17. 11:09반응형
COALESCE (표준 SQL)
sqlCOALESCE(col1, col2, '기본값') -- 첫 번째 non-NULL 값 리턴 COALESCE(amount, 0) -- amount가 NULL이면 0
IFNULL (MySQL 전용)
sqlIFNULL(amount, 0) -- amount가 NULL이면 0 IFNULL(customer_name, '미등록') -- NULL이면 '미등록'
ISNULL / IS NULL
sql-- 조건문에서 WHERE amount IS NULL -- NULL 체크 WHERE amount IS NOT NULL -- NOT NULL 체크 SELECT ISNULL(amount) -- NULL이면 1, 아니면 0
2. 집계함수의 NULL 처리
COUNT
sqlCOUNT(*) -- 모든 행 (NULL 포함) COUNT(column) -- NULL 제외 COUNT(DISTINCT column) -- 중복+NULL 제외
SUM, AVG, MIN, MAX
sqlSUM(amount) -- NULL 제외하고 합계 AVG(amount) -- NULL 제외하고 평균 -- 결과가 NULL이면 COALESCE 사용 COALESCE(SUM(amount), 0)
3. 조건문에서 NULL 처리
CASE WHEN
sqlCASE WHEN amount IS NULL THEN 0 WHEN amount > 1000 THEN 'high' ELSE 'low' END
IF 함수 (MySQL 전용)
sqlIF(amount IS NULL, 0, amount) -- NULL이면 0, 아니면 원값
4. JOIN에서 NULL 처리
LEFT JOIN 후 NULL 처리
sqlSELECT a.customer_id, COALESCE(b.order_count, 0) as order_count FROM customers a LEFT JOIN order_summary b ON a.customer_id = b.customer_id
5. 실무 패턴들
WHERE 절 NULL 처리
sql-- 안전한 비교 WHERE COALESCE(amount, 0) > 100 -- NULL 포함 검색 WHERE name LIKE '%검색어%' OR name IS NULL
GROUP BY NULL 처리
sqlGROUP BY COALESCE(category, 'uncategorized')
ORDER BY NULL 처리
sqlORDER BY COALESCE(order_date, '1900-01-01') -- NULL을 맨 앞으로 ORDER BY order_date IS NULL, order_date -- NULL을 맨 뒤로
6. 코테에서 자주 쓰는 패턴
sql-- 매출 없는 고객도 0으로 표시 SELECT customer_id, COALESCE(SUM(amount), 0) as total_sales FROM orders GROUP BY customer_id -- 활동 없는 날도 0으로 표시 SELECT activity_date, COALESCE(COUNT(DISTINCT user_id), 0) as active_users FROM calendar_dates LEFT JOIN user_activity USING(activity_date) GROUP BY activity_date
핵심: COUNT는 자동 NULL 처리, 나머지는 COALESCE/IFNULL 사용! 👍
반응형'Programing Language > SQL' 카테고리의 다른 글
mysql 실무 적용 코딩 (월별 리텐션 분석) (0) 2025.06.17 MySQL 데이터 타입 변환 ( cast) (0) 2025.06.17 mysql datediff vs timestampdiff (0) 2025.06.17 mysql 실무 적용 코딩 (일별로 최근 30일에 대한 rolling mau 구하기) (0) 2025.06.17 mysql 실무 적용 코딩 (고객별 매출 요약) (0) 2025.06.17