Oracle 함수(Function) - NULL 처리 함수와 선택 함수
NULL 처리 함수
NULL 처리 함수란 해당 컬럼값이 NULL인 경우 대체값을 사용하는 함수이다.
NULL 처리 함수의 NVL과 NVL2 를 알아보자
NVL
NVL이란 NULL로 되어 있는 컬럼의 값을 인자로 지정한 숫자 혹은 문자로 변경하여 반환한다.
- P1 : NULL데이터를 처리할 컬럼명 혹은 값
- P2 : NULL값을 대체하고자 하는 값
[ NVL 예시 ]
SELECT EMP_NO, EMP_NAME, SALARY, NVL(BONUS, 0), -- BONUS가 Null값이면 0으로
(SALARY + (SALARY * NVL(BONUS, 0)))*12
FROM EMPLOYEE;
NVL2
NVL2란 컬럼명이 NULL이 아닌 경우 대체 하고자 하는 값을 적고
NULL인 경우 대체 하고자 하는 값을 적는다.
즉 NULL값인 경우와 NULL값이 아닌 경우에 대체값들을 각각 준다.
작성법: NVL2(컬럼명, P1, P2)
- P1 : NULL이 아닌 경우 대체값
- P2 : NULL인 경우 대체값
[ NVL2 예시 ]
- EMPLOYEE 테이블에서 기존에 보너스를 받지 못하던 사원은
보너스율을 0.3 받던 사원은 0.8로 변경하여
사원명, 기존 보너스, 변경된 보너스 조회
SELECT EMP_NAME, BONUS, NVL2(BONUS, 0.8, 0.3)
FROM EMPLOYEE;
선택 함수
선택함수란 여러 가지 경우에 따라 선택을 할 수 있는 기능을 제공하는 함수이다.
여러가지 선택함수를 알아보자.
DECODE
DECODE란 비교하고자 하는 값 또는 컬럼이 조건식과 같으면 결과 값 반환한다.
- 표현식 : 값에 따라 선택을 다르게 할 컬럼 혹은 값
- 조건 : 해당 값이 참인지 거짓인지 여부 판단
- 결과 : 해당 조건과 일치하는 경우 반환할 값
- DEFAULT : 모든 조건이 불일치 시 반환할 값
[ DECODE 예시 ]
SELECT EMP_ID, EMP_NAME, EMP_NO,
DECODE(SUBSTR(EMP_NO, 8, 1), ‘1’, ‘남’, ‘2’, ‘여‘) AS 성별
FROM EMPLOYEE;
CASE
CASE란 비교하고자 하는 값 또는 컬럼이 조건식과 같으면 결과 값 반환(조건은 범위 값 가능)한다.
- 조건 : 해당 값이 참인지 거짓인지 여부 판단
- 결과 : 해당 조건과 일치하는 경우 반환할 값
- DEFAULT : 모든 조건이 불일치 시 반환할 값
[ CASE 예시 ]
하나의 조건일 때
SELECT EMP_ID, EMP_NAME, EMP_NO,
CASE WHEN SUBSTR(EMP_NO, 8, 1) = 1 THEN ‘남’
ELSE ‘여’
END AS 성별
FROM EMPLOYEE;
여러개의 조건일 때
SELECT EMP_NAME, SALARY,
CASE WHEN SALARY > 5000000 THEN '1등급‘
WHEN SALARY > 3500000 THEN '2등급‘
WHEN SALARY > 2000000 THEN '3등급'
ELSE '4등급‘
END 등급
FROM EMPLOYEE;