- ORACLE - NVL() , NVL2() ,NUMBER(),DECODE() 목차
오라클 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 함수를 사용하는건 최악의 쿼리가 될수 있으므로 사용을 자제하는것이 좋다.
'Database > SQL 오라클' 카테고리의 다른 글
ORACLE -문자처리 함수 (UPPER,LOWER,INITCAP,INSTR,SUBSTR,LPAD,LTRIM) (0) | 2019.09.22 |
---|---|
ORACLE - TABLE 조회 (0) | 2019.09.22 |
ORACLE - INSERT,UPDATE,DELETE (0) | 2019.09.22 |
ORACLE COMMENT 명령 (0) | 2019.09.22 |
ORACLE - DESC 테이블 구조 표시 (0) | 2019.09.22 |