Search

CASE 함수

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
복사