09 | 표현식
표현식Expression이란 한 개 이상의 값과 연산자, SQL 함수 등이 결합된 식이다. 이 절에서는 특정 조건에 따라 값을 변경해서 보이는 CASE 표현식(흔히 CASE문이라고도 한다)에 대해 알아 보자.
CASE WHEN 조건1 THEN 값1
WHEN 조건2 THEN 값2
...
ELSE 기타 값
END
사원 테이블에서 각 사원의 급여에 따라 5000 이하로 급여를 받는 사원은 C, 5000~15000은 B, 15000 이상은 A등급을 반환하는 쿼리를 작성해 보자.
입력
SELECT employee_id, salary,
CASE WHEN salary <= 5000 THEN 'C등급'
WHEN salary > 5000 AND salary <= 15000 THEN 'B등급'
ELSE 'A등급'
END AS salary_grade
FROM employees;
결과
EMPLOYEE_ID SALARY SALARY_GRADE
------------ --------- ------------
198 2600 C등급
199 2600 C등급
200 4400 C등급
201 13000 B등급
202 6000 B등급
203 6500 B등급
204 10000 B등급
205 12008 B등급
206 8300 B등급
100 24000 A등급
...
107개의 행이 선택됨.
WHEN 다음에 조건을 기술하고 THEN 다음에는 앞에서 기술한 조건에 만족하면 실제 출력되는 값을 명시하고 있는데, 주의할 점은 THEN 이하 출력 값들의 데이터 타입은 반드시 일치시켜야 한다. 즉 앞의 문장은 THEN 다음에 있는 ‘C 등급’, ‘B 등급’은 데이터 타입이 모두 문자 형태로 동일하게 명시했는데, 만약 ‘C 등급’, ‘3’, ‘4’처럼 문자형과 숫자형을 혼합해 기술하면 오류가 발생한다. CASE 표현식은 다른 프로그래밍 언어에서도 제공하는 기능으로 그 쓰임새는 비슷하나 프로그래밍 언어나 DBMS 종류에 따라 구문 형식이 약간씩 다르다는 점은 염두에 두자.