오라클SQL 일반함수
Updated:
일반 함수
학습 주제
- NULL값을 치환하는 함수
- 조건 비교 함수
학습 목표
- 계산 수행 전 NULL값을 다른 값으로 치환해서 처리할 수 있다.
- 조건에 따라 다양한 작업을 수행하도록 함수를 사용할 수 있다.
일반 함수 사용하기
일반 함수는 타입에 상관없이 모든 타입에 쓸 수 있는 함수를 말한다.
NVL
NVL(exp1, exp2)
- NULL값을 다른 값으로 바꿀 때 사용한다.
- exp1이 NULL이면 exp2를 반환하고, exp1이 NOT NULL이면 exp1을 반환한다.
- 모든 데이터 타입에 적용 가능하며, exp1, exp2 데이터 타입을 일치시켜야 한다.
예시
SELECT ename, sal, comm, sal+comm, sal+NVL(comm, 0) FROM emp WHERE deptno = 30;
NVL2
NVL2(exp1, exp2, exp3)
- exp1이 NULL이 아닌 경우 exp2를 반환하고, exp1이 NULL일 경우 exp3을 반환한다.
- exp1은 임의의 데이터형을 가질 수 있으며, exp2와 exp3 데이터 타입을 일치시켜야 한다.
예시
SELECT player_name, position, NVL2(position, position || '담당', '등록안됨') FROM player WHERE team_id = 'K08';
NULLIF
NULLIF(exp1, exp2)
- NULLIF는 exp1와 exp2를 비교한다.
- exp1와 exp2가 같으면 NULL값을 반환하고, exp1와 exp2가 같지 않으면 exp1을 반환한다.
- exp1에는 NULL을 지정할 수 없다.
예시
--30번 부서원들의 사원이름, 업무, 업무가 'SALESMAN'인 경우 NULL값으로 변경해서 조회 --SALESMAN을 조회하고 싶지 않을 때 사용한다. SELECT ename, job, NULLIF(job, 'SALESMAN') AS result FROM emp WHERE deptno = 30;
COALESCE
COALESCE(exp1, …, expN)
- COALESCE 함수는 나열된 값을 순차적으로 체크하여 NULL이 아닌 첫 번째 인수를 반환한다.
- 모든 인수가 NULL인 경우에 NULL을 반환한다.
예시
--NULL이 아닌 값을 조회하겠다. COALESCE SELECT ename, comm, sal, COALESCE(comm, sal, 50) FROM emp;
DECODE
DECODE(VALUE, IF1, THEN1, IF2, THEN2, …, default값)
- DECODE는 WHERE절처럼 조건을 사용할 수 있다.
- VALUE값이 IF1일 경우, THEN1값으로 바꿔주고, VALUE값이 IF2일 경우 THEN2값으로 바꿔준다.
- 일치하는 것을 발견하지 못한 경우 DEFAULT값을 반환한다.
- DEFAULT값이 생략되면, 오라클은 NULL을 반환한다.
예시
SELECT ename, sal, DECODE(sal, 3000, 'A팀', '기타') FROM emp;
CASE함수
CASE WHEN 비교조건1, THEN 처리1 WHEN 비교조건2, THEN 처리2 . . . WHEN 비교조건N, THEN 처리N ELSE DEFAULT END
SELECT player_name, height CASE WHEN height < 185 THEN 'C팀' WHEN height < 190 THEN 'B팀' ELSE 'A팀' END 결과 FROM player WHERE position = 'GK'
DECODE함수는 equal처리 밖에 못하지만, CASE함수는 그 외의 처리도 가능하기 때문에 DECODE함수보다 활용도가 높다.
Comments