본문 바로가기
그 외 프로그래밍 언어/SQL

오라클 SQL, null 값을 치환하는 NVL 함수

by Dreaming Coder 2021. 11. 30. 22:50

 


 

null의 값을 다른 값으로 바꿔주는 NVL 함수에 대해서 알아보겠습니다.

 

 

 

지난 포스트

 

오라클 SQL, 산술연산자

자바에서 배웠던 산술 연산자를 SQL에서도 사용할 수 있습니다. 지난 포스트 https://gogogameboy.tistory.com/entry/oracle-sql-select2 산술 연산자 사용하기 자바, 산술연산자 여러 가지 종류의 연산자 중에서.

gogogameboy.tistory.com

 

 

 

따라서 입력해봅시다

 

SELECT employee_id, salary, commission_pct
FROM employees;

위와 같은 명령어를 입력해서 결과를 봐봅시다.

이제는 명령어를 보고 이것이 무엇을 구하고자 하는 명령어인지도 파악할 수 있어야 합니다.

사원의 번호급여, 그리고 보너스를 확인해보려는 것이겠죠?

 

 

 

위와 같이 사원들 중에서는 보너스를 받는 사원도 있고, 받지 않는 사원들도 있습니다.

 

 

 

SELECT employee_id, salary*12*commission_pct
FROM employees;

이제는 사원의 번호연봉을 출력하려고 하는데,

만약 보너스를 받는 사원이 있다면 연봉에 보너스도 곱한 값을 출력을 하려고 합니다.

 

위의 명령어로 원하는 값이 나오지 않을 것 같다고 눈치채신 분들도 있겠지만, 어쨌든 우리들이 배운 것으로는 이렇게 명령어를 입력하는 것이 최선입니다.

결과는...?

 

 

 

보너스를 받지 않는 사원들은 commission_pct(보너스)가 null 값으로 되어있기 때문에,

보너스를 받지 않는 사원들은 급여 * 12 * null을 계산한 것이 되어버려서 결국 null 값이 나와버렸습니다.

보너스를 받는 사원들만이 제대로 된 결과를 출력했고요.

 

 

 

 

NVL 함수

 

이런 때 필요한 것이 NVL 함수입니다.

아래의 명령어를 따라서 입력해봅시다.

 

 

 

SELECT employee_id, salary*12*NVL(commission_pct,1)
FROM employees;

NVL(commission_pct,1) 이 부분이 생소하실 겁니다.

NVL 함수의 ( ) 괄호 안에 위와 같이 써주면, commission_pct 컬럼의 값이 null인 경우에는 null 대신 1을 넣어줘라.. 라는 뜻이 됩니다.

그래서 보너스를 받지 않는 사원들은 결국 급여 * 12 * 1로 계산이 되어서 정상적으로 출력이 될 것입니다.

 

 

 

NVL 함수 덕분에 null 값으로 나왔었던 사원들도 이렇게 정상적으로 연봉이 출력된 것을 확인할 수 있습니다.

 

 

 

 

 

 

다음 포스트

 

오라클 SQL, 열 머리글을 원하는 문자로 수정하는 방법

테이블을 확인할 때 위의 이미지에서 빨갛게 표시된 부분을 열 머리글이라고 합니다. 이 열 머리글을 원하는 문자로 바꾸는 방법에 대해서 알아보겠습니다. 지난 포스트 오라클 SQL, null 값을 치

gogogameboy.tistory.com

 

 

 


이 글이 도움이 됐다면 하단의 공감 버튼을 꾹 눌러서
빨간 하트로 만들어주세요.
지인에게 보여주고 싶은 글이었다면
공감 버튼 옆을 클릭해서 SNS 공유해주세요.
댓글은 블로그 운영에 큰 힘이 됩니다.

 


 


댓글