Back-end/DataBase

[ORACLE] NVL 함수란? 쿼리 널처리

cheersHena 2022. 3. 2. 14:03
반응형

NVL함수


널처리 함수. data 값이 null 값일때 임의 설정값으로 처리해주기

NVL(대상데이터 , NULL일때 데이터)

값이 null 인 경우, 2번째 지정값을 출력하고 그렇지 않으면 대상데이터를 출력한다.

기본테이블

//DEFAULT
SELECT no, name, salary from table

결과)

no name salary
1 홍길동 200
2 김길동 null

 

NVL 예시

//NVL
SELECT no, name, NVL(salary,0) AS salary from table

결과)

no name salary
1 홍길동 200
2 김길동 0

-> salary 컬럼의 null 값이 0으로 치환되었음. null이 아닌경우 그대로 출력.

NVL2함수


마찬가지로 널처리 함수이지만 앞의 NVL함수는 null이 아닌 경우에는 본래의 값을 출력하지만,

NVL2를 쓰면 null이 아닌 경우에도 값을 지정한 값으로 사용할 수 있다.

 

NVL2 ( 대상데이터 , NULL아닐때 데이터 , NULL일때 데이터)

null이 아니면  첫번째 지정값, null이면 지정값2를 출력한다. 

NVL2 예시

//NVL2 
SELECT no, name, NVL(salary,0) AS salary, NVL2(salary, 'Y', 'N') AS yn  from table

NVL(salary,0) :  salaly가 null이면 0, 아니면 salaly 그대로 출력

NVL2(salary, 'Y', 'N') :  salaly가 null이면 N, 아니면 Y 출력 

 

결과)

no name salary yn
1 홍길동 200 Y
2 김길동 0 N

위 NVL함수를 사용하지 않아도 DECODE함수 등을 사용해서 같은 결과를 출력 할 수도 있지만 용도에 맞는 명시적인 함수를 사용하는 것이 좋다.

반응형