[MySQL] COALESCE(value1, …) 함수 사용하기

hyeji·2023년 2월 9일
0

문제를 푸는데 ‘주문 번호가 null인 경우 0으로 반환하라.’ 는 조건이 있었다.

나는 단순히 CASE WHEN 구문을 써서 풀었는데

SELECT 
	CASE WHEN o.order_id is null THEN 0
			ELSE o.order_id END
FROM orders o;

coalesce라는 더 간단한 함수가 있었다.

case when 구문으로 풀었던 문제를 coalesce를 이용해 풀면

SELECT coalesce(o.order_id, 0) as order_id
FROM orders o;

이렇게 훨씬 더 간단하게 코드를 작성할 수 있다.

COALESCE(value,…)

COALESCE는 NULL이 아닌 첫 번째 value값을 반환하거나 NULL값이 있다면 두 번째 value값을 반환하는 함수다. 이 때 모든 value가 NULL인 경우에는 NULL을 반환한다.

✏️ MySQL 공식 문서 참고

Returns the first non-NULL value in the list, or NULL if there are no non-NULL values.
The return type of COALESCE() is the aggregated type of the argument types.

mysql> SELECT COALESCE(NULL,1);
        -> 1
mysql> SELECT COALESCE(NULL,NULL,NULL);
        -> NULL

COALESCE(value1, value2)

value1value2return
A1A
NULL11
NULLNULLNULL

더 자세히 살펴보면

customer_nameorder_dateorder_id
nick2023.01.291
judy2022.12.042
gony2023.02.01NULL
dana2023.01.303

이렇게 생긴 orders 테이블이 있을 때

select customer_name, order_date, coalesce(order_id,0)
from orders o;

위 코드를 실행하면

customer_nameorder_dateorder_id
nick2023.01.291
judy2022.12.042
gony2023.02.010
dana2023.01.303

NULL값이 0으로 바뀐 결과를 볼 수 있다.

profile
Data Analyst

0개의 댓글