상세 컨텐츠

본문 제목

[Oracle] NVL과 NVL2 차이점 NULL 처리 방법

DB/Oracle

by dy8_8 2022. 9. 14. 22:35

본문

728x90

NVL이란, 

SELECT한 값의 결과가 NULL인 경우 대체 값을 지정해 주는 것이다. 

 

그럼 NVL과 NVL2의 차이점은 무엇일까

 

1. NVL은 NVL(컬럼, 컬럼이 NULL일 때 대체 값)

SELECT COLUMN1

            , COLUMN2

            , NVL(COLUMN3, COLUMN4) AS COLUMN5

  FROM TABLE

 

위 코드는 COLUMN3이 NULL 값인 경우 COLUMN4를 대체로 하면 되고, 

COLUMN3이 NULL이 아닌 경우 그대로 COLUMN3을 사용 할 수 있게 된다. 

 

2. NVL2는 NVL2(컬럼, 컬럼이 NULL이 아닐 때 값, 컬럼이 NULL일 때 값)

SELECT COLUMN1

            , COLUMN2

            , NVL(COLUMN3, COLUMN4, COLUMN5) AS COLUMN6

  FROM TABLE

 

위 코드는 COLUMN3이 NULL이 아니면 COLUMN4로 대체,

COLUMN3이 NULL이면 COLUMN5로 대체하여 사용 할 수 있게된다.

 

기존 데이터가 NULL인 경우가 생각보다 많기도 하고, 

예를들어 TABLE_A와 TABLE_B의 두 테이블의 데이터를 같이 사용해야 하는 경우도 은근 많아서 

NVL은 자주 사용하고 있다. 

 

 

관련글 더보기