<선택 함수>
DECODE(비교하고자 하는 대상(컬럼|산술연산|함수식), 비교값1, 결과값1, 비교값2, 결과값2,...)
SWITCH(비교대상){
CASE 비교값1 :
BREAK;
CASE 비교값2 :
BREAK;
...
DEFAULT :
)
-- 사번, 사원명, 주민번호
SELECT EMP_ID, EMP_NAME, EMP_NO, SUBSTR(EMP_NO, 8, 1),
DECODE(SUBSTR(EMP_NO, 8, 1),'1', '남', '2', '여') AS "성별"
FROM EMPLOYEE;
-- 직원의 급여 조회시 각 직급별로 인상해서 조회
-- J7인 사원은 급여를 10% 인상 (SALARY + 1.1)
-- J6인 사원은 급여를 15% 인상 (SALARY * 1.15)
-- J5인 사원은 급여를 20% 인상 (SALARY * 1.2)
-- 그 외의 사원은 급여를 5% 인상 (SALARY * 1.05)
-- 사원명, 직급코드, 기존급여, 인상된급여
SELECT EMP_NAME, JOB_CODE, SALARY,
DECODE(JOB_CODE, 'J7', SALARY * 1.1,
'J6', SALARY * 1.15,
'J5', SALARY * 1.2,
SALARY * 1.05) AS "인상된 급여"
FROM EMPLOYEE;
CASE WHEN THEN
CASE WHEN 조건식1 THEN 결과값1
WHEN 조건식2 TEHN 결과값2
....
ELSE 결과값
END
자바에서의 IF - ELSE IF - ELSE 문
SELECT EMP_NAME, SALARY,
CASE WHEN SALARY >= 5000000 THEN '고급 개발자'
WHEN SALARY >= 3500000 THEN '중급 개발자'
ELSE '초급'
END AS "레벨"
FROM EMPLOYEE;