Database/SQL

[MySQL] Null과 COALESCE() 함수

2022. 8. 17. 19:22

Null 과 COALESCE()


 

COALESCE()

인수를 순서대로 평가하고 처음으로 NULL이 아닌 첫 번째 식의 현재 값을 반환한다.

 

구문

COALESCE ( expression [ ,...n ] )

 

인수

expression = 모든 형식의 식

 

반환형식

데이터 형식 우선 순위가 가장 높은 의 데이터 형식을 반환한다.

모든 식에서 Null을 허용하지 않으면, 결과가 Null을 허용하지 않는 형식으로 처리됨.

 

 

예시)

COALESCE(NULL, NULL, 'third_value', 'fourth_value');

 세 번째 값이 Null이 아닌 첫 값이기 때문에 세 번째 값을 반환한다.


연습

 

SELECT purchase_id
       ,amount
       ,coupon
       ,amount - coupon AS discount_amount
 FROM webmarket.purchase_log_with_coupon;

null값인 coupon으로 인해 discount_amount가 null이 나옴.

 

 

discount_amount 에 Null값이 발생하는 연산요소 coupon 컬럼에 COALESCE 함수 사용

SELECT purchase_id
      ,amount
      ,coupon
      ,amount - COALESCE(coupon, 0) AS discount_amount
 FROM webmarket.purchase_log_with_coupon;

Null값을 연산해서 무시하고 첫번쨰 값인 amount출력

 


 

이전에 배운 CASE 문으로 풀이한 쿼리

SELECT purchase_id
       ,amount
       ,coupon
       ,amount - CASE WHEN coupon IS NULL THEN 0 ELSE coupon END AS discount_amount
 FROM webmarket.purchase_log_with_coupon;

 

 

< 참고 사이트>

https://docs.microsoft.com/ko-kr/sql/t-sql/language-elements/coalesce-transact-sql?view=sql-server-ver16 

 

COALESCE(Transact-SQL) - SQL Server

NULL로 계산되지 않는 첫 번째 식의 값을 반환하는 COALESCE의 Transact-SQL 참조입니다.

docs.microsoft.com