[SQL] CASE 표현
[SQL] CASE 표현
CASE 표현은 IF-THEN-ELSE 논리와 유사한 방식으로 표현식을 작성해 SQL의 비교 연산 기능을 보완하는 역할을 하며, ANSI/ISO SQL 표준에는 CASE Expression이라고 표시되어 있는데, 함수와 같은 성격을 갖고 있음과 동시에 Oracle의 Decode 함수와 같은 기능을 한다. 본론으로 들어가보자.
CASE 표현 문법
IF-THEN-ELSE 논리를 구현하는 CASE 표현은 SIMPLE_CASE_EXPRESSION과 SEARCHED_CASE_EXPRESSION 두가지 표현법 중 하나를 택해 사용하게 된다.
사용법
- CASE SIMPLE_CASE_EXPRESSION 조건 [ELSE 디폴트값] END
- CASE SEARCHED_CASE_EXPRESSION 조건 [ELSE 디폴트값] END
첫번째 SIMPLE_CASE_EXPRESSION은 CASE 다음에 바로 조건에 사용되는 컬럼이나 표현식을 말한다. 다음 WHEN절에서 앞에서 정의한 칼럼이나 표현식과 같은지와 다른지를 판단하는 문장으로 EQUI(=) 조건만 사용한다면 SEARCHED_CASE_EXPRESSION보다 간단하게 사용할 수 있는 장점이 있다.
두번째 SEARCHED_CASE_EXPRESSION은 CASE 다음에 컬럼이나 표현식을 표시하지 않고, 다음 WHEN절에서 EQUI(=) 조건 포함 여러(>, >=, <, <=)을 이용한 조건절을 사용할 수 있으므로 SIMPLE_CASE_EXPRESSION보다 훨씬 다양한 조건을 적용할 수 있는 장점이 있다.
예제
예제에 사용되는 릴레이션은 아래와 같다.
DEPT 릴레이션
EMP 릴레이션
- SIMPLE_CASE_EXPRESSION
1
2
3
4
5
6
7
SELECT LOC
, CASE LOC
WHEN 'NEW YORK' THEN 'EAST'
WHEN 'CHICAGO' THEN 'CENTER'
ELSE 'ETC'
END AS AREA
FROM DEPT;
- SEARCHED_CASE_EXPRESSION
1
2
3
4
5
6
7
SELECT ENAME
, CASE
WHEN SAL >= 3000 THEN 'HIGH'
WHEN SAL >= 1000 THEN 'MID'
ELSE 'LOW'
END AS SALARY_GRADE
FROM EMP;
읽어주셔서 감사합니다. 😊
Reference
SQL 전문가 가이드 - Kdata 한국데이터산업진흥원
This post is licensed under CC BY 4.0 by the author.



