COALESCE(병합) 은 어떨때 쓰는가?
SQL은 굉장히 직관적이다
SELECT 는 말 그대로 선택이고 MAX는 최대값, JOIN은 합치기 등등..
근데 유난히 이 COALESCE는 한국어로 병합인데 이건 좀 이해하기 힘들더라...
어쨋건... 이걸 쓰는 이유는 Null값을 다루기 위해서다.
CREATE TABLE purchase_log (
purchase_id varchar(255)
, amount integer
, coupon integer
);
INSERT INTO purchase_log
VALUES
('10001', 3280, NULL)
, ('10002', 4650, 500)
, ('10003', 3870, NULL)
;
이 상태에서 할인가격을 구하려면 amount 에서 coupon을 빼야 할텐데,
쿠폰이 없는 고객들은 쿠폰의 value가 NULL이 되면서, 결과적으로는
3200원 - NULL을 시전하게 되어 오류가 생기는데, 이때 COALESCE를 사용하여
amount - COALESCE(coupon , 0) AS 할인가격 을 설정해준다.
첫번째 인자(coupon)가 NULL이면 0 을 반환해주고 coupon이 만약 천원으로 들어가면
그대로 그 천원이 반환된다.
출처 : https://augustines.tistory.com/64
PostgreSQL - COALESCE 함수 활용
쿼리를 만들 때, null 값을 특정 데이터로 가공해서 추출이 필요할 때가 있다. 뿐만 아니라, application layer에서 데이터가 아닌 null 을 리턴할 때, NullPointerException을 초래할 수도 있고, 집계 쿼리를
augustines.tistory.com
더블콜론 ( :: ) 의 의미
간단하다. 타입 캐스팅 (형변환) 이라고 보면 된다
(내 기억엔 프로그래밍 언어에도 c#같은곳에서 사용하는걸로 알고있는데...)
1 :: BOOLEAN 이면 true가 출력될 것이고
1.2 :: INTEGER 이면 float를 int로 바꾸니 1이 출력될 것이다.
사실
CAST (1 :: BOOLEAN)
CAST(1.2 :: INTEGER)
키워드로 해도 결과는 똑같다.
'Database > SQL' 카테고리의 다른 글
Check 키워드로 제약조건 설정(DB Validation) 하기 (0) | 2023.04.24 |
---|