DECODE
- 값에 따라 반환값이 결정되는 구문이다.
- decode(칼럼명, 값1, 반환값1,
칼럼명, 값2, 반환값2, 값3, 반환값3)
ex)
-- 각 사원의 부서이름을 가져온다.
-- 10 : 인사과, 20 : 개발부, 30 : 경영 지원팀
-- 40 : 생산부
select empno, ename,
decode(deptno, 10, '인사과',
20, '개발부',
30, '경영지원팀',
40, '생산부')
from emp;
ex)
-- 직급에 따라 인상된 급여액을 가져온다.
-- CLEAK : 10%
-- SALESMAN : 15%
-- PRESIDENT : 20%
-- MANAGER : 5%
-- ANALYST : 20%
select empno, ename, job,
decode(job, 'CLEAK', sal *1.1,
'SALESMAN', sal *1.15,
'PRESIDENT', sal *1.2,
'MANAGER', sal * 1.05,
'ANALYST', sal * 1.2)
from emp;
CASE
- 조건에 따라 반환값이 결정되는 구문이다.
- case when 조건식1 then 반환값1
endwhen 조건식2 then 반환값2
ex)
-- 급여액별 등급을 가져온다.
-- 1000미만 : C등급
-- 1000이상 2000미만 : B등급
-- 2000이상 : A등급
select empno, ename,
case when sal < 1000 then 'C등급'
when sal >= 1000 and sal < 2000 then 'B등급'
when sal >= 2000 then 'A등급'
end
from emp;
ex)
-- 직원들의 급여를 다음과 같이 인상한다.
-- 1000이하 : 100%
-- 1000초과 2000미만 : 50%
-- 2000이상 : 200%
select empno, ename,
case when sal<=1000 then sal*2
when sal>1000 and sal<2000 then sal *1.5
when sal>=2000 then sal*3
end
from emp;
DECODE를 사용하면 값에 따라 반환값을 결정할 수 있다.
CASE를 사용하면 조건에 따라 반환 값을 결정할 수 있다.