Post

[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 릴레이션

DEPT 릴레이션

EMP 릴레이션

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; 

CASE 표현 SIMPLE_CASE_EXPRESSION 예제


  • 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; 

CASE 표현 SEARCHED_CASE_EXPRESSION 예제


읽어주셔서 감사합니다. 😊

Reference
SQL 전문가 가이드 - Kdata 한국데이터산업진흥원

This post is licensed under CC BY 4.0 by the author.