티스토리 뷰

오라클 NVL, NVL2 함수 사용법

 

NVL이란 ?

-해당 컬럼의 값이 null 값인 경우 특정값으로 출력하고 싶으면 NVL 함수를 사용하고,

NVL 함수는 값이 null인 경우 지정값을 출력한다.

- 함수  :  NVL("값", "지정값")

 

 

 

 

NVL2란?

 

-null 값이 아닐경우 특정값으로 출력하고 싶으면 NVL2 함수를 사용하면 된다.

NVL2 함수는 첫번쨰 파라미터가 null이 아닌경우  지정값1을  출력하고, null인 경우 지정값2을 출력 한다.

- 함수 :  NVL2("값", "지정값1", "지정값2")

 

NUMBLER()

-number(5,2) -> 정수부분 3자리 이상 넘어갈 수 없음 - 5-2=3 3은 100의자리 
( 즉, -999 ~ +999까지 )

 

 

DECODE()

위의 NVL, NVL2 함수를 사용하지 않고 DECODE 함수를 사용하여 같은 결과를 출력할 수 있지만, 용도에 맞는 명시적인 함수를 사용하는 것이 좋다. 

 

<DECODE 사용>

DECODE(COMM, null, 0, COMM) --NVL

DECODE(COMM, null, "N", "Y") --NVL2

 

 

DECODE 함수는 오라클 쿼리에서 가장 많이 사용하는 함수 중 하나이다.

표준 SQL 함수가 아니라서 사용을 꺼려하기도 하지만 잘 사용하면 아주 편하기 때문에 유용하다.

최근에는 CASE WHEN 구문 사용을 많이 권장하기도 한다.

 

  ELSE 부분은 생략이 가능하다. 해당 조건이 없으면 NULL

 

 

▲ DECODE 함수 내부에 또 다른 DECODE 함수를 사용할 수 있다

단 ! DECODE 함수를 조건이 많아지면 쿼리의 가독성이 떨어지고 차후 유지보수가 힘들다. 그리고 DECODE 함수 내부에 또 다른 DECODE 함수를 사용하는건 최악의 쿼리가 될수 있으므로 사용을 자제하는것이 좋다.