본문 바로가기

Learning/SQL

NULL 관련 함수

<NULL 관련 함수>

 

  • NVL: NULL값을 다른 값으로 바꿀 때 사용. 모든 데이터 타입에 적용 가능

 

1
2
3
SELECT last_name, manager_id 매니저
FROM employees
WHERE last_name = 'King';
cs

 

 

 

 

 

1
2
3
4
SELECT last_name, NVL(manager_id, 0) 매니저
FROM employees
WHERE last_name = 'King';
--manager_id에 있는 null값을 0으로 변환
cs

 

 

 


 

  • NVL2 (ex, ex1, ex2): ex값이 NULL이 아니면 ex1, NULL이면 ex2

 

1
2
3
SELECT last_name, NVL2(manager_id, 10) 매니저
FROM employees
WHERE last_name = 'King';
cs

 

 

 


 

  • NULLIF (ex1, ex2): ex1과 ex2값이 동일하면 NULL, 동일하지 않으면 ex1으로 출력

 

1
2
SELECT NULLIF(1,1), NULLIF(1,2)
FROM DUAL;
cs

 

 

 

 


 

  • COALESCE (ex1, ex2, ex3,...): ex1이 NULL이면 ex2 반환,  ex2도 NULL이면 ex3반환...

 

  • employees테이블에서 last_name, salary, commission_pct 출력하되 commission_pct가 NULL값이면 salary에서 2000인상

 

1
2
3
4
5
6
SELECT last_name 이름, salary 월급,
commission_pct 커미션pct,
COALESCE((salary+(commission_pct*salary)), salary+2000)
월급인상
FROM employees
ORDER BY 3;
cs

 

 

 

 


 

<NULL 관련 함수 예제>

 

  • employees 테이블에서 이름, 월급 (salary), 커미션 (commission_pct)를 NVL 함수를 이용하여 연봉은 (월급*12)+(월급*12*커미션)으로 나타내고 commission_pct가 null값인 경우 0으로 치환

 

1
2
3
4
5
SELECT last_name 이름, salary 월급,
NVL(commission_pct,0) 커미션,
(salary*12)+(salary*12*NVL(commission_pct,0)) 연봉
FROM employees
ORDER BY 4 DESC;
cs

 

 

 

 


 

  • NVL2함수를 이용하여 위의 예제에서 커미션이 있을때와 없을 때의 계산 방법도 출력

 

1
2
3
4
5
6
SELECT last_name 이름, salary 월급,
NVL(commission_pct,0) 커미션,
(salary*12)+(salary*12*NVL(commission_pct,0)) 연봉,
NVL2(commission_pct,'SAL+COMM','SAL') 연봉계산
FROM employees
ORDER BY 4 DESC;
cs

 

 

 


 

  • employees 테이블에서 first_name과 last_name의 길이 LENGTH를 비교하여 같으면 null, 아니면 LENGTH(first_name)값을 출력

 

1
2
3
4
5
SELECT first_name, LENGTH(first_name) "글자수1",
last_name, LENGTH(last_name) "글자수2",
NULLIF(LENGTH(first_name), LENGTH(last_name)) "결과"
FROM employees
ORDER BY last_name;
cs

 

 

 

 

'Learning > SQL' 카테고리의 다른 글

집계 함수 (그룹 함수)  (0) 2020.06.16
DECODE 함수, CASE 함수  (0) 2020.06.16
변환형 함수  (0) 2020.06.16
날짜형 함수  (0) 2020.06.15
숫자형 함수  (0) 2020.06.15