728x90
반응형
1. NVL
NVL (exp1, exp2): exp1이 null이면 exp2로 바꾼다.
2. NVL2
NVL2(exp1,exp2,exp3) : exp1이 null이이 아니면 exp2로 바꾸고, exp1이 null이면 exp3로 바꾼다. exp1은 어떤타입의 데이터로 가질 수 있다.
3.COALESCE
COALESCE (expr1, expr2, ..., exprn), for n>=3
[Oracle Documents]
SELECT product_id, list_price, min_price,
COALESCE(0.9*list_price, min_price, 5) "Sale"
FROM product_information
WHERE supplier_id = 102050
ORDER BY product_id, list_price, min_price, "Sale";
결과값 (list_price*0.9한값을 sales에 넣는데, list_price값이 null이면 3번째 컬럼(min_price)의 값을, list_price is null, 3번째컬럼(min_price)도 null이면 default값은 '5'(=exp3) 를 넣어라.
PRODUCT_ID LIST_PRICE MIN_PRICE Sale
---------- ---------- ---------- ----------
1769 48 43.2
1770 73 73
2378 305 247 274.5
2382 850 731 765
3355 5
4. NULLIF
NULLIF(exp1,exp2): exp1 = exp2 이면 null값 return exp1 <> exp2이면 exp1(첫번째 expression)을 return한다.
결론.
function(exp1,exp2,exp3....)에서 exp의 관계 (같거나, 다르다)나 null 여부(is null or not null) 에 따라 각기 용법에 맞는 expression을 사용하면 된다.
728x90
'SQL > Oracle' 카테고리의 다른 글
PRECEDING AND FOLLOWING 예제 (ORACLE) (0) | 2021.06.17 |
---|---|
GRETEST/LEAST VS MAX/MIN 비교 (오라클) (0) | 2021.06.16 |
oracle_ unpivot 활용 (0) | 2021.06.11 |
오라클 자주사용하는 힌트목록 정리(친절한 sql 튜닝) (1) | 2021.02.04 |