본문 바로가기

[오라클 레퍼런스 함수] DECODE - 값에 따른 결과값 변환

by ㅇㅍㅍ 2023. 8. 3.
[오라클 레퍼런스 함수] DECODE - 값에 따른 결과값 변환
728x90

DECODE

 

구문

DECODE(expr, search, result [, search, result ]... [, default ])

 

목적

DECODE 함수는 expr을 하나씩 각 search 값과 비교합니다. 만약 exprsearch와 같다면, Oracle Database는 해당하는 result를 반환합니다. 일치하는 결과가 없을 경우, Oracle은 default를 반환합니다. default가 생략된 경우, Oracle은 null을 반환합니다.

인수들은 숫자 형식(NUMBER, BINARY_FLOAT, 또는 BINARY_DOUBLE) 또는 문자 형식 중 하나일 수 있습니다.

 

  • 만약 exprsearch가 문자 데이터인 경우, Oracle은 비패딩 비교 세맨틱을 사용하여 비교합니다. expr, search, 그리고 resultCHAR, VARCHAR2, NCHAR 또는 NVARCHAR2 데이터 유형 중 하나일 수 있습니다. 반환되는 문자열은 VARCHAR2 데이터 유형이며, 첫 번째 result 매개변수와 동일한 문자 집합(character set)으로 구성됩니다.
  • 만약 첫 번째 search-result 쌍이 숫자인 경우, Oracle은 모든 search-result 표현식과 첫 번째 expr을 비교하여 가장 높은 숫자 우선 순위를 가지는 인수를 결정하고, 나머지 인수를 해당 데이터 유형으로 암묵적으로 변환하여 해당 데이터 유형을 반환합니다.

 

search, result, default 값들은 표현식에서 유도될 수 있습니다. Oracle Database는 단축 평가(short-circuit evaluation)를 사용합니다. 데이터베이스는 각 search 값들을 expr과 비교하기 전에만 평가하며, 모든 search 값들을 expr과 비교하기 전에 모두 평가하지 않습니다. 그 결과, Oracle은 이전 searchexpr과 동일한 경우 이후의 search를 평가하지 않습니다.

Oracle은 expr과 각 search 값을 자동으로 첫 번째 search 값의 데이터 유형으로 변환한 후에 비교합니다. Oracle은 반환 값도 첫 번째 result의 데이터 유형과 동일하게 자동으로 변환합니다. 만약 첫 번째 result의 데이터 유형이 CHAR이거나 첫 번째 result가 null인 경우, Oracle은 반환 값도 VARCHAR2 데이터 유형으로 변환합니다.

DECODE 함수에서 Oracle은 두 개의 null을 동등하다고 간주합니다. 만약 expr이 null인 경우, Oracle은 null인 첫 번째 searchresult를 반환합니다.

DECODE 함수의 최대 구성 요소 수는 expr, searches, results, 그리고 default를 포함하여 255개입니다.

 

참고:

 

예제

이 예제는 warehouse_id의 값을 디코드합니다. 만약 warehouse_id가 1이라면, 함수는 'Southlake'를 반환하고, 만약 warehouse_id가 2라면 'San Francisco'를 반환합니다. 그리고 이와 같은 방식으로 계속 진행됩니다. 만약 warehouse_id가 1, 2, 3, 4 중 하나가 아니라면, 함수는 'Non domestic'을 반환합니다.

SELECT product_id,
       DECODE (warehouse_id, 1, 'Southlake', 
                             2, 'San Francisco', 
                             3, 'New Jersey', 
                             4, 'Seattle',
                                'Non domestic') "Location" 
  FROM inventories
  WHERE product_id < 1775
  ORDER BY product_id, "Location";

 


출처: 오라클 레퍼런스

원문 링크: Oracle DECODE 함수 문서

 

반응형

댓글