jowoohyeong / TIGENSOFT

0 stars 0 forks source link

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

Open jowoohyeong opened 1 year ago

jowoohyeong commented 1 year ago

Oracle NVL, NVL2 함수 사용법

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

jowoohyeong commented 1 year ago

NVL 함수

NVL 함수는 값이 NULL인 경우 지정값을 출력하고, NULL이 아니면 원래 값을 그래도 출력한다.

WITH emp AS (
  SELECT 7839 empno, 'KING'   ename, 'PRESIDENT' job, NULL comm FROM dual UNION ALL
  SELECT 7654 empno, 'MARTIN' ename, 'SALESMAN'  job, 1400 comm FROM dual
) 
SELECT empno
     , ename
     , comm         AS comm      
     , NVL(comm, 0) AS comm2 --커미션이 NULL 이면 '0'   
FROM emp

img1 daumcdn

jowoohyeong commented 1 year ago

NVL2 함수

NVL2 함수는 TEMP = NULL이 아닌 경우 A를 출력하고 , NULL인 경우 B를 출력합니다.

예) NVL2(comm, comm, '보너스없음')

jowoohyeong commented 1 year ago

DECODE 함수 사용예제

위의 NVL, NVL2 함수를 사용하지 않고 DECODE 함수를 사용하여 같은 결과를 출력할 수 있습니다.

WITH emp AS (
  SELECT 7839 empno, 'KING'   ename, 'PRESIDENT' job, NULL comm FROM dual UNION ALL
  SELECT 7654 empno, 'MARTIN' ename, 'SALESMAN'  job, 1400 comm FROM dual
) 
SELECT empno
     , ename
     , comm                 AS comm      
     , DECODE(comm, NULL, 0, comm)  AS decode1
     , DECODE(comm, NULL, 'Y', 'N')     AS decode2
FROM emp

img1 daumcdn

jowoohyeong commented 1 year ago

https://gent.tistory.com/189