NVL, NVL2 사용법 및 차이
데이터 처리를 할때 NULL 처리는 항상 중요합니다.
이런 NULL 데이터 처리를 간편하게 하기위해 오라클(oracle)에서는
NLV 함수를 제공하고 있습니다.
오라을 외 다른 데이터베이스에서는 nvl 사용이 불가능 합니다.
1. NVL 함수 [ NVL( 대상 , null인 경우 값 ) ]
대상의 값이 NULL 인 경우 지정한 값으로 치환합니다.
모든 데이터 타입에 적용이 가능합니다.
ex ) select nvl(GOODS_QTY, 0) from GOODS;
-> GOODS테이블에 GOODS_QTY가 null 일 경우 0으로 치환
2. NVL2 함수 [ NVL2( 대상, null 아닌경우 값, null인 경우 값 ) ]
대상의 값이 NULL 인 경우와 NULL이 아닌경우를 지정한 값으로 치환합니다.
NVL2 함수는 DECODE함수와 비슷한 IF문의 기능을 가지고 있습니다.
개인적으로는 DECODE 보다 더 간편하다고 생각하네요.
때에 따라서 NVL2와 DECODE를 사용하시면 될것 같습니다.
ex ) select NVL2(GOODS_QTY, GOODS_QTY, '재고없음') from GOODS;
-> GOODS테이블에 GOODS_QTY가 NULL이 아닌경우 GOODS_QTY 으로 치환
-> GOODS테이블에 GOODS_QTY가 NULL인 경우 '재고없음' 으로 치환
NVL, NVL2 예제
WITH GOODS AS
(
SELECT '선풍기' AS GOODS_NM, '39000' AS GOODS_PRICE, '77' AS GOODS_QTY FROM DUAL UNION ALL
SELECT '노트북' AS GOODS_NM, '420000' AS GOODS_PRICE, '62' AS GOODS_QTY FROM DUAL UNION ALL
SELECT '안경' AS GOODS_NM, '30000' AS GOODS_PRICE, null AS GOODS_QTY FROM DUAL
)
SELECT GOODS_NM
, GOODS_PRICE
, GOODS_QTY
, NVL(GOODS_QTY,0) as nlv1
, NVL2(GOODS_QTY,GOODS_QTY,'재고없음') AS nvl2
FROM GOODS;
'데이터베이스 > Oracle' 카테고리의 다른 글
[ORACLE] 오라클 SELECT 중복값 제거 하기(MINUS 연산자) (0) | 2020.06.16 |
---|---|
[ORACLE] 오라클 데이터 복구 TIMESTAMP 사용법 (0) | 2020.06.08 |
[Oracle] 오라클 버전 확인 방법 (0) | 2020.06.05 |
[ORACLE] 오라클 INSTR 문자 위치 찾기 및 예제 (0) | 2020.06.03 |
[ORACLE] 오라클 CASE WHEN THEN 조건문 사용법 (0) | 2020.05.28 |