오라클〃[공부]9. Decode 함수와 Case 표현식

반응형



라클 내장함수에도 자바의 if문과 else if문등 조건문등을 쓸 수 있는 함수가 있는데요. 바로 DECODE함수와 CAS 표현식 2가지입니다.


엄밀히 말하자면 Decode함수는 SQL함수이지만 Case는 함수가 아닌 표현식의 일종입니다. 그러나 표현식이지만 Decode보다 더 확장된 기능을 제공합니다.



DECODE 함수


1. 구문형식

Decode( expr, search1, result1, search2, result2, …… , default_result)


2. 설명

디코드 함수는 첫번째 파라미터로 들어오는 expr 표현식을 검사하여, 이 값이 search1에 해당할 경우 result1을 반환하고, search2에 해당하면 result2를 반환합니다. 

※ default_result는 생략될 수 있고, 모든 search값을 만족하지 않을 경우 null을 반환하게 됩니다.

※ DECODE에 사용되는 식은 동등비교만 가능합니다. (true / false)


3. 예제




위 예제는 job(업무)가 CLERK이면 판매원을 출력하고, SALESMAN이면 영업사원을 출력합니다. 그 2개에 해당하지 않는 job이면 나머지는 모두 디폴트값으로 일반사원을 반환하는 예제죠. 만약에 디폴트값을 주지 않으면 null값으로 반환하게 됩니다.  






 CASE 표현식


1. 구문형식

① 기본형 구문

CASE 대상값 when 비교값1 then 처리1

               when 비교값2 then 처리2

               …

               else 디폴트처리

END;


② 검색형 구문

CASE 대상값 when 비교조건1 then 처리1

               when 비교조건2 then 처리2

               …

              else 디폴트처리

END;



2. 설명

case는 함수가 아닌 표현식의 일종입니다. 표현식은 하나 혹은 그 이상의 값과 연산자, 함수가 조합된 것을 말하며 함수보다 범위가 더 넓습니다. 위에서 언급했듯이 decode보다 확장된 기능을 제공합니다.



3. 예제


▲ 기본형 구문 예제


▲ 검색형 구문 예제





반응형