개발로그필름

[SQL] COALESCE() 함수란? | SQL에서 NULL 값 처리하는 방법 본문

IT/SQL

[SQL] COALESCE() 함수란? | SQL에서 NULL 값 처리하는 방법

yuullog 2025. 2. 27. 17:16
728x90
반응형
SMALL

 

 

반응형

 

 

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 반환

 

 

SMALL

 

 

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()는 여러 개의 값을 비교할 수 있어 더 유연하게 사용 가능!

 

 

반응형
LIST