https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm#i1017437 자체 번역 (이상할 수 있음)
1. 문법
DECODE ( expr , { search , result , } default )
2. 목적
-
DECODE는 expr과 각 search 값을 하나씩 비교한다. 만약 expr과 search의 값이 같으면, Oracle 데이터베이스는 그에 해당하는 result값을 return한다.
-
만약 매치되는 search값이 없다면, Oracle는 default값을 return한다.
-
만약 default값이 생략되어 있다면, Oracle는 null값을 return한다.
-
파라미터 값으로는 모든 숫자 타입 (NUMBER, BINARY_FLOAT, BINARY_DOUBLE) 혹은 문자열 타입을 지정할 수 있다.
-
만약 expr과 search값이 문자열 타입이면, Oracle는 *Nonpadded comparision semantics를 사용하여 둘을 비교한다. expr, search, result는 char, varchar2, nchar, nvarchar2가 될 수 있다. string는 varchar2 데이터 타입을 리턴하게 되며, result 파라미터 타입 또한 varchar2 데이터 타입으로 지정된다.
-
만약, 첫번째 search-result가 numeric일 경우, Oracle는 모든 search-result 표현식과 첫 번째 설명을 비교하여 가장 높은 숫자 우선 순위를 가진 인수를 결정하고, 나머지 인수를 해당 데이터 유형으로 암묵적으로 변환한 뒤 해당 데이터 유형을 반환한다.
-
search, result, default 값들은 표현식으로부터 파생된다. Oracle 데이터베이스는 short-circuit evaluation을 사용한다. 그 말인 즉슨, 데이터베이스는 각 search 값들을 expr와 비교하기 전에 평가하며, 모든 search 값들을 평가한 후 expr과 비교한다. 자연스럽게, Oracle는 이전 검색이 만료된 검색과 동일한 경우 검색을 평가하지 않는다.
-
Oracle는 비교하기 전에 자동으로 expr과 각 search 값을 첫 번째 search 값의 데이터 유형으로 변환한다. Oracle은 첫 번째 result값과 동일한 데이터 유형으로 반환 값을 자동으로 변환한다. 첫 번째 result에 데이터타입 CHAR이 있거나 첫 번째 결과가 NULL인 경우, 오라클은 return 값을 데이터 타입 VARCHAR2 로 변환한다.
-
DECODE 함수에서는, 오라클은 두 개의 NULL을 동등하다고 판단한다. 만약 expr가 null일 경우, Oracle은 첫 번째 search의 result 값 또한 null로 반환한다.
-
DECODE 함수에서 사용할 수 있는 컴포넌트(expr, searches, results, and default)의 최대 갯수는 255개이다.
*Nonpadded Comparison Semantics 추가 예정
'💾 Database > Oracle' 카테고리의 다른 글
[Oracle] split[0]처럼 사용하기 (1) | 2018.10.11 |
---|---|
[Oracle] 테이블 컬럼 정보 조회하는 방법 (0) | 2018.04.17 |