Dev/DBMS

[Oracle] NVL / NVL2 / DECODE

pu3vig 2023. 10. 31. 20:15
728x90
  • target:  NVL / NVL2 / DECODE 사용법 (null, 공백, 치환)

 


  • method: 

1. NVL

NVL("값", "지정값") : 값이 NULL인 경우, 지정값으로 치환

SELECT EMPNO
     , ENAME
     , COMM
     , NVL(COMM, 0) AS COMM2
  FROM EMP
  
  /*
  EMPNO  |  ENAME  |  COMM  |  COMM2
  7839   |  KING   |        |  0
  7654   |  MARTIN |  1400  |  1400
  */

 


2. NVL2

NVL2("값", "지정값1", "지정값2") = NVL2("값", "NOT NULL", "NULL")

SELECT EMPNO
     , ENAME
     , COMM
     , NVL2(COMM, 'Y', 'N') AS COMM2
  FROM EMP
  
  /*
  EMPNO  |  ENAME  |  COMM  |  COMM2
  7839   |  KING   |        |  N
  7654   |  MARTIN |  1400  |  Y
  */

3. DECODE

DECODE("값", "조건", "지정값1", "지정값2")

= DECODE("값", NULL, "지정값2", "지정값1")

= NVL2("값", "지정값1", "지정값2")

SELECT EMPNO
     , ENAME
     , COMM
     , NVL2(COMM, 'Y', 'N') AS COMM2
     , DECODE(COMM, NULL, 'N', 'Y') AS COMM3
  FROM EMP
  
  /*
  EMPNO  |  ENAME  |  COMM  |  COMM2  |  COMM3
  7839   |  KING   |        |  N      |  N
  7654   |  MARTIN |  1400  |  Y      |  Y
  */

※ NVL2는 NOT NULL이 기본 조건이라고 보면 됨 (값이 NOT NULL인 경우 첫번째 인자, NULL인 경우 두번째 인자)

※ DECODE는 조건이 참인 경우, 첫번째 인자, 아니면 두번째 인자


  • source:

https://gent.tistory.com/189

 

[Oracle] 오라클 NVL, NVL2 함수 사용방법 (null, 공백, 치환)

오라클 NVL, NVL2 함수 사용법 해당 칼럼의 값이 NULL 값인 경우 특정값으로 출력하고 싶으면 NVL 함수를 사용하고, NULL 값이 아닐 경우 특정값으로 출력하고 싶으면 NVL2 함수를 사용하면 된다. NVL 함

gent.tistory.com

 

728x90