본문 바로가기
DBMS/Oracle

[ORACLE] CASE 함수 / CASE WHEN

by 성은2 2021. 6. 4.

오라클에는 if문과 비슷한 기능을 하는 DECODE 함수가 있다.

(DECODE : 여러가지 경우에 대해서 선택할 수 있도록 하는 기능)

https://sungeune97.tistory.com/75

 

[Oracle] NVL , NVL2, DECODE

1. NVL함수 : NULL일경우 (Oracle 함수 NVL (value,0) -- value가 null 일경우 0을 반환 / 그렇지 않을경우 value값을 반환 ex ) NVL(컬럼, 'SYSDATE') -> 컬럼 값이 없을 경우 SYSDATE를 반환 2. NVL2 함수 : NULL이 아닐경우

sungeune97.tistory.com

 

 

DECODE는 조건이 많아지면 가독성이 떨어지기 때문에 조건이 복잡한 경우 CASE WHEN을 사용하는게 좋다.

 

DECODE 함수는 조건이 일치(=비교 연산자)하는 경우에 대해서만 적용하지만, CASE 함수는 다양한 비교 연산자를 이용하여 조건 제시 및 범위 지정할 수 있다는 점이 이 둘의 차이점이다.

 

 

문법

CASE WHEN 조건1 THEN 리턴값1

        WHEN 조건2 THEN 리턴값2

          ELSE 리턴값 

 END AS 컬럼명

 

 

ELSE 부분은 생략이 가능하며, 만족하는 조건이 없으면 NULL을 리턴한다. 

 

 

 

 

예제

SELECT stu_name, stu_code

        , CASE WHEN stu_code = '1' THEN '1학년'

        , CASE WHEN stu_code = '2' THEN '2학년'

                   ELSE '졸업대상'

          END AS GRADE  // Alias 지정해주어야함

 FROM STU_TABLE

 

 

 

 

stu_name stu_code GRADE
김서현 3 졸업대상
이보영 2 2학년
옥자연 1 1학년