개발이좋아

NVL과 NVL2 본문

DataBase

NVL과 NVL2

noobdev 2020. 2. 24. 15:27

만약 연산을 하려는 데이터가 NULL일 경우 산술 연산자나 비교 연산자는 동작을 하지 않는다.

하지만 특정 열 값이 NULL일 때에도 연산을 해주어야 하는 경우도 있는데 이때 사용하는 것이 NULL 값을 다른 값으로 대체시켜주는 NVL과 NVL2 함수이다.

 


NVL

NVL 함수는 입력 데이터의 값이 NULL이라면 그 데이터의 값을 다른 값으로 대체하고 NULL이 아니라면 그 값을 그대로 반환하는 함수이다.

 

NVL([NULL인지 여부를 검사할 데이터 또는 열(필수)], [앞의 데이터가 NULL일 경우 반환할 데이터(필수)])  

첫 번째 입력 값으로는 NULL 여부를 검사할 데이터를 두 번째 입력 값으로는 NULL일 경우 대체될 데이터를 입력한다.

 

NVL 함수 예제

위 사진의 예제는 추가 수당을 나타내는 COMM열의 값이 NULL일 경우 0으로 바꾸는 함수이다.

결과는 아래와 같다.

NVL 함수 예제 결과

열을 보면 SAL+COMM 열은 NULL값이 있을 경우 연산이 안되지만 NVL이 붙은 열은 NULL값이 0으로 대체되기 때문에 연산이 제대로 수행되는 것을 확인할 수 있다.

 


NVL2 

NVL2 함수는 NVL과 비슷하지만 데이터가 NULL이 아닐 경우 반환할 데이터를 추가로 지정할 수 있다.

 

NVL2([NULL인지 여부를 검사할 데이터 또는 열(필수)],
       [앞 데이터가 NULL이 아닐 경우 반환할 데이터 또는 계산식(필수)],
       [앞 데이터가 NULL일 경우 반환할 데이터 또는 계산식(필수)]     -NVL 기본 형식

NVL2의 첫 번째 파라미터로는 NULL 여부를 검사할 데이터, 두 번째 파라미터로는 NULL일 아닐 경우 반환될 데이터,

세 번째 파라미터는 NULL일 경우 반환될 데이터를 지정해준다.

 

NVL2 함수 예제

위 사진의 예제는 COMM이 NULL이 아닐 경우에는 'O'를 NULL일 경우에는 'X'를 반환하는 NVL2와,

COMM이 NULL 아닐 경우에는 연봉에 추가 수당을 더 한 데이터를 NULL일 경우 그냥 1년치 연봉만을 반환한다.

 

결과는 아래와 같다.

NVL2 함수 예제 결과

NVL2(COMM, 'O', 'X') 열을 보면 COMM의 값이 존재하는 행은 'O'를 COMM의 값이 NULL인 행은 'X'가 출력된다.

 

 

 

 

본 포스팅은 필자가 공부한 내용을 정리한 것으로 오류가 존재할 수 있습니다.
참고 : Do it! 오라클로 배우는 데이터베이스 입문
Do it! 오라클로 배우는 데이터베이스 입문
국내도서
저자 : 이지훈
출판 : 이지스퍼블리싱 2018.10.30
상세보기
Comments