반응형
쿼리를 만들 때, null 값을 특정 데이터로 가공해서 추출이 필요할 때가 있다. 뿐만 아니라, application layer에서 데이터가 아닌 null 을 리턴할 때, NullPointerException을 초래할 수도 있고, 집계 쿼리를 만들 때도, Null 데이터의 연산은 Null을 반환하므로, 데이터 변환이 필요하다. PostgreSQL에는 Oracle 의 nvl 함수와 같이 COALESCE라는 함수가 있다.
아래와 같은 데이터가 있다.
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 컬럼의 값을 뺀 할인된 값을 추출하고자 할 때, default 값 변경 없이 연산할 경우, Null 이 된다. 이런 경우 Coalesce함수를 이용해서 Null 을 방지할 수 있다.
SELECT purchase_id , amount , coupon , amount - coupon AS 할인가격1 , amount - COALESCE(coupon, 0) AS 할인가격2 FROM purchase_log;
결과는 아래와 같다.
참고로, NULLIF라는 함수도 있다. 다만, 이 함수는 COALESCE함수와 같이 디폴트 값을 직접 반환하지 않는다. 연산을 할 때, 0으로 나누는 것을 피할 수 있다.
반응형
'Tech > Database' 카테고리의 다른 글
Transaction의 이해 - PostgreSQL (0) | 2018.07.04 |
---|---|
PostgreSQL - greatest, least, SIGN함수 (0) | 2018.07.03 |
PostgreSQL - 도메인 추출 쿼리 (0) | 2018.07.03 |
MS-SQL Command start with admin privilege (0) | 2018.06.04 |
SQL Server data HASHBYTES 를 이용한 암호화 (0) | 2018.05.15 |
댓글