반응형

오라클 CASE WHEN 문법과 DECODE 문법의 예제를 알아보자

 

 

 

 

오늘은 오라클의 case 문과 decode 문에 대해서 포스팅을 해보려고 합니다.

 

case 문과 decode 문을 사용할 때는

 

일반적으로 프로그래밍을 할 때 if 문을 사용하는 것과 동일한 용도로 sql 에서 사용하겠죠?

 

 

아래는 오라클 공식 사이트에서 제공하는 

 

 CASE 와 DECODE 의 문법을 정리해놓은 그림입니다.

 

 

CASE 문법

 

 

 

DECODE 문법

 

 

 

 

딱 한눈에 봐도 CASE 문을 매우 복잡해 보이고

 

DECODE 는 간단해보이지 않나요??

 

 

그럼 사용방법을 알아보겠습니다.

 

 

 

 

CASE 문법

 

simple case expression 과 search case expression 으로 나뉘어져있지요?

 

 

simple case expression

 

SELECT cust_last_name

             , CASE credit_limit WHEN 100 THEN 'Low'

                                               WHEN 5000 THEN 'High'

                                               ELSE 'Medium'

                END

FROM customers;

 

 

 

credit_limit 가 100 이면 Low, 5000 이면 High , 이도저도 아니면 Medium 을 출력하는 문장입니다.

 

위처럼 credit_limit 를 기준으로 결과값을 도출해내는 것이 simple case expression 입니다.

 

 

search case expression

 

SELECT AVG(CASE WHEN e.salary > 2000 THEN e.salary ELSE 2000 END) "Average Salary"

  FROM employees e;

 

 

salary 가 2000 보다 크면 salary 값을 출력, 아니면 ( 2000보다 같거나 작으면 ) 2000 을 입력해서 평균 급여를 출력하는 문장입니다.

 

 

CASE 문 뒤에 특정필드를 기준으로 값을 비교해서 TRUE 값을 찾는것과

WHEN 절이 나온 후 기준필드의 특정값과 비교를 하느냐가 차이점입니다.

 

 

 

 

 

 

 

DECODE 문법

 

 

그렇다면 이번에는 위의 문장을 DECODE 문법으로 바꿔서 작성해볼까요?

 

SELECT cust_last_name

             , DECODE ( credit_limit, 100, 'Low', 5000, 'High', 'Medium' )

             , CASE credit_limit WHEN 100 THEN 'Low'

                                               WHEN 5000 THEN 'High'

                                               ELSE 'Medium'

                END

FROM customers;

DECODE 

 

 

 

좀 더 짧고 간단해졌죠?

 

편의상 사용하기 쉽고 가독성이 좋은것으로 사용하시면 될 것 같습니다.

 

 

 

 

이상으로 CASE 문법과 DECODE 문법의 사용법에 대해 알아보았습니다.

 

궁금한점이 있으면 답글 남겨주세요

 

감사합니다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,