SQL 튜닝의 시작 (2013년)
CASE 0 0 99,999+

by 구루비스터디 CASE [2018.07.14]


CASE

  • CASE 는 Oracle 에서 DECODE 와 마찬가지로 IF - THEN - ELSE 를 표현할 수 있는 구문으로, 특정 조건에 맞는 데이터를 추출하거나 조건끼리 비교 처리하여 데이터를 추출하고 싶은 경우에 간편하게 사용할 수 있다.


CASE Syntax



CASE [ expression ]
  WHEN condition_1 THEN result_1
  WHEN condition_2 THEN result_2
  ...
  WHEN condition_n THEN result_n
  ELSE result
END


CASE Sample


  -- Sample
  SELECT EMPNO, ENAME,
         CASE WHEN SAL < 1800 THEN 'F 등급'
              WHEN SAL >= 1800 AND SAL < 3000 THEN 'E 등급'
              WHEN SAL >= 3000 AND SAL < 4500 THEN 'D 등급'
              WHEN SAL >= 4500 AND SAL < 6000 THEN 'C 등급'
              WHEN SAL >= 6000 AND SAL < 8000 THEN 'B 등급'
              WHEN SAL >= 8000 THEN 'A 등급'
         END
   FROM EMP


  • CASE : SQL 에서 CASE 구문을 시작할 때 사용한다 (선언).
  • WHEN
    • 비교 조건을 기입하는 부분으로, 조건 (condition_1)이 TRUE 이면 THEN 절의 값을 리턴한다 (result_1).
    • 그런데 FALSE 라면 이후의 WHEN 절의 조건 (contition_2~n)에 대해 TRUE 인지 FALSE 인지 비교해 가며 만족하는 값을 추출한다.
  • ELSE : WHEN 절의 비교가 모두 FALSE 인 경우 ELSE 절의 값을 리턴한다. 만약, ELSE 절이 없으면 NULL 을 리턴한다.


DECODE 와 CASE 변환.


CASE 1 >CASE 9+1 WHEN 10 THEN '정답' END

로직 : IF 9+1 = 10 THEN
          RETURE '정답';
     END IF

변환 : DECODE(9+1, 10, '정답')



CASE 2 >CASE 9+1 WHEN 9 THEN '정답 1' WHEN 10 THEN '정답 2' END
로직 : IF 9+1 = 9 THEN
          RETURN "정답 1"
       ELSIF 9+1= 10 THEN
          RETURN "정답 2"
        ND IF;
변환 : DECDOE (9+1, 9, "정답 1", 10, "정답 2")



CASE 3 >  CASE 9+1 WHEN 9 THEN '정답 1' WHEN 10 THEN '정답 2' ELSE '정답 3' END
로직 : IF 9+1 = 9 THEN
          RETURN '정답 1'
       ELSE IF 9+1= 10 THEN
          RETURN '정답 2'
       ELSE
          RETURN '정답 3'
       END IF;
변환 : DECODE (9+1, 9, '정답 1', 10, '정답



"데이터베이스 스터디모임" 에서 2013년에 "SQL튜닝의시작 " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3802

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입