행위

오라클 nvl nvl2

DB CAFE

thumb_up 추천메뉴 바로가기


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;