TIL: SQL의 COALESCE 함수 활용법
오늘 배운 것: COALESCE 함수
SQL에서 COALESCE는 주어진 표현식 목록에서 첫 번째로 NULL이 아닌 값을 반환하는 함수이다. 데이터베이스에서 누락된 데이터를 처리하거나 대체 값을 지정하는 데 유용하다.
1. 기본 구문
COALESCE(expression1, expression2, ..., expressionN)
- expression1, expression2, ...: 평가할 표현식 목록.
- 왼쪽에서 오른쪽으로 평가하며, 첫 번째 NULL이 아닌 값을 반환한다.
- 모든 표현식이 NULL인 경우 NULL을 반환한다.
2. 기본 사용 예시
SELECT COALESCE(NULL, 'Value1', 'Value2') AS result;
-- 결과: 'Value1'
SELECT COALESCE(NULL, NULL, 'Value2') AS result;
-- 결과: 'Value2'
SELECT COALESCE(NULL, NULL, NULL) AS result;
-- 결과: NULL
3. NULL 값 대체하기
COALESCE는 NULL 값을 처리하거나, 특정 값을 대체하여 보다 깔끔한 결과를 제공한다.
3.1. NULL 값을 다른 값으로 대체
SELECT employee_id,
COALESCE(department, 'Not Assigned') AS department
FROM employees;
- department 값이 NULL인 경우, **'Not Assigned'**로 대체.
결과 예시:
employee_id department
| 1 | Sales |
| 2 | Not Assigned |
3.2. 다중 열 비교
여러 열에서 값이 NULL인지 확인하고, 대체 값을 찾는다.
SELECT employee_id,
COALESCE(phone, email, 'No Contact Info') AS contact_info
FROM employees;
- phone 값이 NULL이면, email을 확인하고, 둘 다 NULL이면 **'No Contact Info'**를 반환.
4. 데이터 타입 주의 사항
COALESCE는 반환 값의 데이터 타입을 가장 높은 우선순위를 가진 표현식의 데이터 타입으로 결정한다.
SELECT COALESCE(NULL, 100, 'Value') AS result;
-- 오류: 데이터 타입이 일치하지 않음 (숫자와 문자열 혼합)
- 해결법: CAST 또는 CONVERT 사용
SELECT COALESCE(CAST(NULL AS VARCHAR), CAST(100 AS VARCHAR), 'Value') AS result;
-- 결과: '100'
5. COALESCE와 ISNULL, IFNULL 비교
- ISNULL(expression, replacement): 특정 DBMS(MS SQL)에서만 사용되며, 2개의 인수를 비교.
- IFNULL(expression, replacement): MySQL에서 동일한 기능 제공.
- COALESCE(expression1, expression2, ..., expressionN): 표준 SQL 함수로, 다수의 표현식을 지원.
6. 응용 사례
6.1. 데이터 통합 및 보고서 생성
SELECT customer_id,
COALESCE(first_name, last_name, 'Anonymous') AS display_name
FROM customers;
- 고객의 first_name이 NULL이면 last_name 사용. 둘 다 NULL이면 **'Anonymous'**로 대체.
6.2. 조건부 연산 최적화
SELECT product_id,
COALESCE(discount_price, regular_price) AS final_price
FROM products;
- 할인 가격(discount_price)이 NULL인 경우 정가(regular_price)를 반환.
느낀 점
COALESCE는 데이터를 다루는 데 있어 강력하고 유연한 도구로, 특히 NULL 처리가 필요한 상황에서 효과적이다. 다양한 대체 옵션을 제공하며, 데이터의 신뢰성과 가독성을 높일 수 있었다.
'내일배움캠프 TIL' 카테고리의 다른 글
| 2024.12.17 TIL 그래프 시각화 (0) | 2024.12.17 |
|---|---|
| 2024.12.16 TIL - 넘파이와 리스트의 차이 (0) | 2024.12.16 |
| 2024.12.11 TIL - 알고리즘 문제풀이 (1) | 2024.12.11 |
| 2024.12.10 TIL - 인공지능을 위한 수학(2). (1) | 2024.12.10 |
| 2024.12.09 TIL - 인공지능을 위한 수학 특강 (0) | 2024.12.09 |