본문 바로가기

[오라클 레퍼런스 함수] TREAT - 유형(type) 변환

by ㅇㅍㅍ 2023. 9. 2.
[오라클 레퍼런스 함수] TREAT - 유형(type) 변환
728x90

 

TREAT

 

구문

TREAT(expr AS [ REF ] [ schema. ]type)

 

목적

TREAT 함수는 표현식의 선언된 유형을 변경하는 데 사용됩니다.

표현식이 JSON 데이터를 반환하도록 원할 때 AS JSON 키워드를 사용합니다. 이것은 일부 텍스트를 JSON 데이터로 해석하도록 강제하려는 경우 유용합니다. 예를 들어, {} VARCHAR2 값을 빈 JSON 객체로 해석하려면 문자열이 아닌 JSON 데이터로 강제로 해석할 수 있습니다.

이 함수를 사용하려면 type에 대한 EXECUTE 오브젝트 권한이 있어야 합니다.

  • expr AS JSON에서 expr은 JSON을 포함하는 SQL 데이터 유형입니다. 예를 들어, CLOB입니다.
  • expr AS type에서 exprtype은 사용자 정의 객체 유형이어야 하며 최상위 컬렉션은 제외됩니다.
  • typeexpr의 선언된 유형의 상위 유형 또는 하위 유형이어야 합니다. expr의 가장 구체적인 유형이 type (또는 type의 하위 유형)이면 TREATexpr을 반환합니다. expr의 가장 구체적인 유형이 type (또는 type의 하위 유형)이 아니면 TREATNULL을 반환합니다.
  • expr의 선언된 유형이 REF 유형인 경우에만 REF를 지정할 수 있습니다.
  • expr의 선언된 유형이 expr의 소스 유형의 REF이면 typeexpr의 소스 유형의 하위 유형 또는 상위 유형이어야 합니다. DEREF(expr)의 가장 구체적인 유형이 type (또는 type의 하위 유형)이면 TREATexpr을 반환합니다. DEREF(expr)의 가장 구체적인 유형이 type (또는 type의 하위 유형)이 아니면 TREATNULL을 반환합니다.

 

참고:

더 많은 정보는 "Data Type Comparison Rules"을 참조하십시오.

 

예제

다음 문장은 "Substitutable Table and Column Examples"에서 생성된 oe.persons 테이블을 사용합니다. 이 예제는 persons 테이블의 모든 사람에 대한 급여 속성을 검색하며, 사람(people)의 인스턴스에 대해서는 null 값을 반환합니다.

SELECT name, TREAT(VALUE(p) AS employee_t).salary salary 
   FROM persons p;

NAME                          SALARY
------------------------- ----------
Bob
Joe                           100000
Tim                             1000

 

TREAT 함수를 사용하여 대체 가능한 열의 하위 유형 속성에 인덱스를 생성할 수 있습니다. 예제는 "Indexing on Substitutable Columns: Examples"에서 확인할 수 있습니다.

 


출처: 오라클 레퍼런스

원문 링크: Oracle TREAT 함수 문서

 

반응형

댓글