본문 바로가기
개발/오라클

[Oracle] 오라클 조건절/CASE구문/DECODE구문

by Jxdn 2020. 3. 31.
반응형

오늘은 오라클 쿼리에서 사용할 수 있는 조건절인 CASE 구문과 DECODE 구문의 사용방법을 알아보겠습니다.

 

쿼리 내에 조건절을 사용할 수 있는 대표적인 방법으로는 CASE 구문과 DECODE 구문이 있는데요,

지극히 개인적인 제 판단으로는 CASE구문이 좀 더 가독성이 좋더라구요.

 

그래서 간단한 조건절의 경우 DECODE를 사용하고 조금 복잡한 조건식이 들어갈 경우 CASE를 사용합니다.

 

[CASE 구문]

CASE WHEN [조건식1]
           THEN [결과1]
           WHEN [조건식2]
           THEN [결과2]
           ...
     ELSE [ELSE 결과]
 END

[DECODE 구문]

DECODE([비교컬럼], [조건1], [결과1], [조건2], [결과2], … , [ELSE 결과] )

예제를 통해 좀 더 자세히 알아보도록 하지요!

 

Q. EMPLOYEE 테이블의 이름의 첫글자가 '김'일 경우 '1'로, '박'일 경우 '2'로 표현, 둘 다 아닐경우 '0'으로 표현하시오.

 

[CASE 사용]

SELECT 
       CASE WHEN NAME LIKE '김%'
            THEN  '1'
            WHEN NAME LIKE '박%'
            THEN '2'
            ELSE '0'
        END AS NAME_GROUP
  FROM EMPLOYEE 

 

[DECODE 사용]

SELECT DECODE (SUBSTR(NAME, 0, 1), '김', '1', '박', '2', '0') AS NAME_GROUP
  FROM EMPLOYEE

*DECODE는 비교를 (=)로 하기 때문에 SUBSTR함수를 사용했습니다.

 

 

감사합니다!

반응형

댓글