미스터 역마살

DECODE와 CASE 본문

Database/ORACLE

DECODE와 CASE

Mr. YeokMaSsal 2016. 2. 21. 14:14
728x90
반응형

이번시간에는 DECODE와 CASE에 대해서 알아본다. 


일반적인 SQL함수들보다 자주 사용되며 굉장히 유용한 기능을 하고 있는 이들에 대해 알아보자



1. DECODE

 


정의 : 프로그래밍 언어에서 사용하는 IF~ ELSE문과 같은 기능을 하는 SQL 함수이다.




[DECODE 함수 기본 구문형식]

 

                                                     



특징 

 

  • expr표현식을 검사하여 이값이 search1에 해당할 경우 result1을, search2에 해당할 경우 result2를 반환하게 되며 명시된 모든 search값에 해당하지 않을 경우 default_result를 반환한다.
  • expr 표현식과 search의 데이터 타입이 같아야한다.(자동형변환이 가능한 경우에는 오라클이 자동 형변환을 시켜준다)
  • 표현식으로 올수 있는 건 컬럼, 함수, 문자상수, 서브쿼리, 또다른 decode함수등이 있다.
  • DECODE함수는 일반 프로그래밍의 IF ~ ELSE문과는 달리 오로지 동등연산자만 가능하다(equal)
  • 조건이 255개까지 사용 가능하다.
  • 오라클에서만 DECODE함수를 사용할 수 있다.
  • 마지막에 있는 default_result는 생략가능하며 샹략시 모든 search값을 만족하지 않을 경우에는 NULL을 반환한다.



 

 

[DECODE 함수 사용 예제]   











2. CASE


정의 : CASE는 함수가 아닌 표현식(Expression)의 일종이다. 표현식은 하나 혹은 그이상의 값과 연산자, 함수가 조합된 것을 말하며 표현        식은 함수보다 더 큰 개념이라 할 수 있다. CASE는 DECODE함수와 매우 흡사해 보이나 DECODE함수에 비해 좀 더 확장된 기능을        제공한다고 할 수 있다. 


       CASE표현식은 기본형과 검색형으로 나뉜다. 기본형의 경우 동등비교를 진행하여 WHEN이하 비교값과 같을 경우 THEN이하를 수          행하고, 그렇지 못한 경우 그 다음의 WHEN절로 이동한다. 그리고 검색형의 경우는 기본형보다 좀 더 확장된 기능을 수행한다. 확장        된 기능이라 함은 다양한 비교조건을 사용할 수 있다는 의미로 해석 할 수 있다. CASE WHEN 다음에 비교조건이 오게 되면서 일반        프로그래밍에서의 IF 문과 마찬가지로 여러가지 형태의 조건을 사용 할 수 있다. 




[기본형]





[검색형]







특징 

 

  • CASE표현식은 DECODE 보다 좀 더 확장된 기능이다.
  • DECODE함수를 사용하는 것 보다 CASE의 사용이 좋은 성능을 발휘한다.
  • DECODE는 오라클에서만 사용 가능하지만 CASE는 표준 SQL에 속하여 다른 DBMS에서도 사용이 가능하다.
  • CASE 표현식 내부에 또다른 CASE표현식을 사용할 수 있다.
  • CASE를 구성하는 파라미터는 최대 255개까지 사용할 수 있으며, WHEN.. THEN쌍은 2개의 파라미터로 취급한다.


 

 




[CASE 기본형 예제]

 






[CASE 검색형 예제]



 





끝으로 DECODE와 CASE는 굉장히 많이 사용되는 구분으로써 응용하기에 따라 아주 다양하고 편리한 기능을 제공하므로 이 두가지에 대해서는 많은 SQL문장을 작성하는 연습을 통해 익히도록 해야겠다.




728x90

'Database > ORACLE' 카테고리의 다른 글

오라클 11g 설치하기  (0) 2016.02.21
Orange 단축키  (0) 2016.02.21
오라클 SCOTT 계정 활성화하기  (0) 2016.02.21
오라클 오브젝트 종류  (0) 2016.02.21
DELETE, TRUNCATE, DROP의 차이점  (0) 2016.02.21
Comments