💻Programming/Oracle
[Oracle/오라클] NULL처리 함수
horang_dev
2021. 3. 15. 19:54
1. IS [NOT] NULL
- 특정 컬럼의 값이 NULL인지 판단
- NULL은 '=' 기호로 판단 불가 (문법상 오류는 아님)
컬럼명 IS [NOT] NULL
ex) 사원테이블(employees)에서 영업실적코드 (commission_pct)가 NULL이 아닌 사원정보를 조회하시오.
SELECT A.employee_id AS 사원번호,
A.emp_name AS 사원명,
B.department_name AS 부서명,
A.commission_pct AS 영업실적,
A.salary AS 급여
FROM employees A, department B
WHERE A.department_id = B.department_id
AND A.commission_pct IS NOT NULL;
-- 출력 결과 --
2. NVL ( c, val )
- NULL처리 함수 중 가장 널리 사용
- c 컬럼의 값이 NULL이면 val 값을 반환하고, NULL이 아니면 자신의 값을 반환
- 주로 연산식에 사용
- c와 val의 데이터 타입이 같아야 함.
ex) 사원테이블에서 영업실적에 따른 보너스를 계산하고 이번달 지급액을 조회하시오.
보너스 = 급여 * 영업실적코드
지급액 = 급여 + 보너스
Alias는 사원번호, 이름, 부서명, 본봉, 영업실적, 보너스, 지급액이다.
SELECT A.employee_id AS 사원번호,
A.emp_name AS 이름,
B.department_name AS 부서명,
A.salary AS 본봉,
NVL(TO_CHAR(A.commission_pct,'0.0'),'없음') AS 영업실적,
NVL(ROUND(A.salary*A.commission_pct,1),0) AS 보너스,
NVL(A.salary+ROUND(A.salary*A.commission_pct,1),A.salary) AS 지급액
FROM employees A, departments B
WHERE A.department_id = B.department_id;
-- 출력 결과 --
3. NVL2 ( c, val1, val2 )
- c 컬럼의 값이 NULL이 아니면 val 값을, NULL이면 val2를 반환
- val1과 val2는 같은 데이터 타입이어야 함.
ex) 회원테이블에서 회원들의 핸드폰번호를 조회하시오. 핸드폰번호가 없으면 '연락처 없음'을 출력하시오.
Alias는 회원번호, 회원명, 연락처이다.
SELECT mem_id AS 회원번호,
mem_name AS 회원명,
NVL2(mem_hp,mem_hp,'연락처 없음') AS 연락처
FROM member;
-- 출력 결과 --
반응형