데이터베이스/Oracle

Oracle 함수(Function) - NULL 처리 함수와 선택 함수

Cuvely 2020. 11. 11. 12:49
728x90
반응형

NULL 처리 함수

NULL 처리 함수란 해당 컬럼값이 NULL인 경우 대체값을 사용하는 함수이다.

 

NULL 처리 함수의 NVLNVL2 를 알아보자

 

 

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;

728x90
반응형