개발로그필름
[SQL] COALESCE() 함수란? | SQL에서 NULL 값 처리하는 방법 본문

QL을 사용하다 보면 데이터에 NULL 값이 포함된 경우가 많다
NULL 값은 “값이 없음”을 의미하기 때문에, 연산이나 데이터 분석 과정에서 문제가 될 수 있다
이럴 때 유용하게 사용할 수 있는 함수가 바로 COALESCE() 함수
📌 COALESCE() 함수란?
✔ COALESCE(코얼레스) 함수는 여러 개의 값 중에서 NULL이 아닌 첫 번째 값을 반환하는 함수
✔ 만약 모든 값이 NULL이라면, NULL을 반환
✔ NULL을 특정 기본값으로 대체할 때 유용하게 사용 가능
✅ COALESCE() 기본 문법
COALESCE(value1, value2, value3, ...)
- 왼쪽부터 차례로 확인하며 첫 번째로 NULL이 아닌 값을 반환
- 만약 모든 값이 NULL이면 NULL 반환
✅ COALESCE() 기본 예제
📌 NULL이 포함된 데이터에서 기본값 설정하기
SELECT COALESCE(NULL, 'A', 'B') AS result;
➡ 결과: 'A'
➡ 첫 번째 NULL을 건너뛰고, 첫 번째로 NULL이 아닌 ‘A’를 반환
📌 모든 값이 NULL일 경우
SELECT COALESCE(NULL, NULL, NULL) AS result;
➡ 결과: NULL
➡ 모든 값이 NULL이라면 NULL 반환
✅ COALESCE()를 활용한 실전 예제
1️⃣ NULL 값을 특정 기본값으로 대체
📌 고객 테이블에서 전화번호가 NULL이면 ‘미등록’으로 표시하기
SELECT customer_name, COALESCE(phone, '미등록') AS phone_number
FROM customers;
➡ 전화번호가 NULL인 고객은 ‘미등록’으로 표시
2️⃣ 여러 개의 컬럼에서 값 찾기
📌 고객의 ‘이름’ 컬럼이 없으면 ‘닉네임’을, 닉네임도 없으면 ‘ID’를 반환하기
SELECT customer_id,
COALESCE(name, nickname, user_id) AS display_name
FROM customers;
➡ name이 있으면 반환 → 없으면 nickname → 둘 다 없으면 user_id 반환
3️⃣ NULL을 0으로 변환하여 연산하기
📌 판매 테이블에서 NULL인 할인 금액을 0으로 변환 후 계산
SELECT product_name, price,
COALESCE(discount, 0) AS discount,
price - COALESCE(discount, 0) AS final_price
FROM sales;
➡ 할인 금액이 NULL이면 0으로 대체하여 가격 계산 오류 방지
✅ COALESCE() vs. ISNULL() vs. IFNULL()
✔ COALESCE() → SQL 표준 함수, 여러 개의 값을 확인하며 첫 번째 NULL이 아닌 값 반환
✔ ISNULL() → SQL Server에서 사용, 단 하나의 값을 확인해 NULL이면 대체 값 반환
✔ IFNULL() → MySQL에서 사용, NULL이면 대체 값 반환
📌 비교 예제
-- COALESCE: 여러 개의 값 중 NULL이 아닌 첫 번째 값 반환
SELECT COALESCE(NULL, NULL, '값 있음', '더 있음');
-- 결과: '값 있음'
-- ISNULL (SQL Server)
SELECT ISNULL(NULL, '대체값');
-- 결과: '대체값'
-- IFNULL (MySQL)
SELECT IFNULL(NULL, '대체값');
-- 결과: '대체값'
💡 COALESCE()는 여러 개의 값을 비교할 수 있어 더 유연하게 사용 가능!
'IT > SQL' 카테고리의 다른 글
[SQL] SELECT문 실행 순서 (0) | 2025.03.11 |
---|---|
[SQL] SUBSTRING() 함수 (0) | 2025.03.10 |
[SQL] 년, 월, 일 컬럼 값(date)만 있을 때 요일을 어떻게 조회하지? (0) | 2025.03.05 |
[SQL] LIKE 조건 여러 개 적을 때 (0) | 2025.03.05 |
[SQL] BETWEEN 문법 (SQL 범위 조회 연산자) (0) | 2025.03.05 |