오라클 nvl nvl2
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 오라클 NVL[편집]
NVL( 컬럼명 , null인 경우 값 )
- 대상의 값이 NULL 인 경우 지정한 값으로 치환.
- 모든 데이터 타입에 적용 가능.
select nvl(sal, 0) from emp;
- emp 테이블에 sal 컬럼이 null 일 경우 0으로 치환
2 오라클 NVL2[편집]
NVL2( 컬럼명 , null 아닌경우 값, null인 경우 값 )
- 대상의 값이 NULL 인 경우와 NULL이 아닌경우를 지정한 값으로 치환
- NVL2 함수는 DECODE함수와 비슷한 IF문의 기능 가지고 있음.
- DECODE 보다 더 간편함.
select NVL2(sal, sal, '재고없음') from emp;
- emp 테이블에 sal이 NULL이 아닌경우 sal로 치환, NULL인 경우 '재고없음' 으로 치환
2.1 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;