select first_name,
CASE length(first_name) WHEN 5 THEN 'five char'
END
from employees;
# first_name이 5글자이면 five char로 출력
Bash
복사
select first_name,
CASE length(first_name) WHEN 5 THEN 'five char'
ELSE TO_CHAR(length(first_name))
END
from employees;
# first_name이 5글자이면 five char로 출력하고, 아니면 first_name에 길이 출력
Bash
복사
select first_name,
CASE length(first_name) WHEN 5 THEN 'five char'
WHEN 6 THEN 'six char'
ELSE TO_CHAR(length(first_name))
END
from employees;
# first_name이 5글자면 five char로 출력하고, first_name이 6글자면 six char로 표시하고, 둘 다 해당하지 않으면 first_name의 길이를 출력
Bash
복사
select employee_id, salary,
CASE job_id WHEN 'IT_PROG' THEN salary * 1.1
WHEN 'ST_CLERK' THEN salary * 1.15
WHEN 'SA_REP' THEN salary * 1.2
ELSE salary
END REVISED_SALARY
from employees;
# job_id가 IT_PROG면 110% ST_CLERK이면 115% SA_REP면 120% salary가 더 증가.
Bash
복사
select ename, TO_CHAR(hiredate, 'YYYY'), sal,
CASE TO_CHAR(hiredate, 'YYYY') WHEN '1981' THEN 5000
ELSE 0
END BONUS
from emp;
# hiredate를 4자리 년도로 바꾸고, 만약 1981이면 5000 출력하고, 아니면 0 출력
Bash
복사
select last_name, salary,
CASE WHEN salary < 5000 THEN 'LOW'
WHEN salary < 10000 THEN 'Medium'
WHEN salary < 20000 THEN 'Good'
ELSE 'Ecellent'
END salary_grade
from employees;
# CASE문에서 제일 위부터 본다.
# salary가 5000 미만면 LOW
# salary가 10000 미만면 Medium
# salary가 20000 미만이면 Good
# 셋 다 포함하지 않으면 Ecellent 출력
Bash
복사
select ename, comm,
CASE WHEN comm IS NULL THEN 7000
ELSE 0
END BONUS
from emp;
# comm이 NULL이면 7000으로 출력
Bash
복사
select ename, sal, job,
CASE WHEN job = 'SALESMAN' AND sal > 1000 THEN 9000
WHEN job = 'ANALYST' AND sal > 2500 THEN 8000
ELSE 0
END BOUNUS
from emp;
# job이 SALESMAN인데, sal이 1000을 넘으면 9000 출력
# job이 ANALYST인데, sal이 2500을 넘으면 8000 출력
Bash
복사
