728x90
COALESCE
COALESCE() 함수는 여러 개의 인자 중에서 NULL이 아닌 첫 번째 값을 반환하는 함수
→ 값이 NULL일 경우 대체 값을 설정할 때 유용하다.
기본
COALESCE(value1, value2, ..., valueN)
- 왼쪽부터 차례대로 NULL이 아닌 값을 찾고, 이를 반환
- 모든 인자가 NULL이면 NULL을 반환
- 최소 하나의 인자가 필요
NULL이 아닌 첫 번째 값 반환
SELECT COALESCE(NULL, NULL, 'Hello', 'World');
실행 결과 >
왼쪽부터 확인하여 NULL을 건너뛰고 3번쨰 'Hello'를 반환한다.
coalesce |
Hello |
NULL 대신 기본값 설정
SELECT COALESCE(NULL, 'Default Value');
실행 결과 >
NULL이므로 'Defaul Value'를 반환한다.
coalesce |
Default Value |
예시 : 고객 이메일이 없는 경우 기본 이메일 설정
SELECT name, COALESCE(email, 'no-email@example.com') AS email_address
FROM customers;
실행 결과>
name | email_address |
Bob | bob@example.com |
Pil | no-email@example.com (table에 NULL값을 가짐) |
Don | don@example.com |
NULL 값이 있는 컬럼끼리 대체
SELECT name, COALESCE(phone, mobile, 'No Contact') AS contact_number
FROM customers;
table >
name | phone | mobile |
Ke | NULL | 010-1234-1234 |
Don | NULL | NULL |
실행 결과 >
phone이 NULL이면 mobile을 사용하고, 둘 다 NULL이면 'No Contact' 반환한다.
name | contact_number |
Ke | 010-1234-1234 |
Don | No Contact |
COALESCE() vs. CASE WHEN
CASE WHEN을 사용해도 같은 결과를 얻을 수 있지만, COALESCE()가 더 간결
COALESCE() → CASE WHEN으로 구현
-- COALESCE()
SELECT
name,
COALESCE(email, 'no-email@example.com') AS email_address
FROM customers;
-- CASE WHEN
SELECT
name,
CASE
WHEN email IS NOT NULL THEN email
ELSE 'no-email@example.com'
END AS email_address
FROM customers;
COALESCE() vs. NULLIF()
함수 | 역할 |
COALESCE(a, b, c) | NULL이 아닌 첫 번째 값 반환 |
NULLIF(a, b) | a와 b가 같으면 NULL 반환 |
NULLIF() 예제
SELECT NULLIF(10, 10), NULLIF(10, 20);
실행 결과 >
NULLIF(10,10) | NULLIF(10,20) |
NULL | 10 |
- NULLIF(10, 10) → 두 값이 같으므로 NULL 반환
- NULLIF(10, 20) → 두 값이 다르므로 10 반환
728x90
'Tech > SQL' 카테고리의 다른 글
[SQL] DATE_FORMAT (MySQL) (0) | 2025.04.06 |
---|---|
[SQL] JOIN(조인) (0) | 2025.02.10 |
[SQL] ROUND, CEIL, FLOOR (반올림, 올림, 내림) (0) | 2025.02.08 |
[SQL] CASE WHEN (0) | 2025.02.08 |
[SQL] WITH AS (Common Table Expression, CTE) (0) | 2025.02.08 |