OBJECT_TRANSFORM 함수
SUPER 객체를 변환합니다.
구문
OBJECT_TRANSFORM( input [KEEP path1, ...] [SET path1, value1, ..., ... ] )
인수
- 입력
-
SUPER 유형 객체로 해석되는 식입니다.
- KEEP
-
이 절에 지정된 모든 경로 값이 유지되고 출력 객체로 전달됩니다.
이 절은 선택 사항입니다.
- path1, path2, ...
-
마침표로 구분되고 큰따옴표로 묶인 경로 구성 요소 형식의 상수 문자열 리터럴입니다. 예를 들어,
'"a"."b"."c"'
는 유효한 경로 값입니다. 이는 KEEP 절과 SET 절의 경로 파라미터에 적용됩니다. - SET
-
경로와 값 쌍을 사용하여 기존 경로를 수정하거나 새 경로를 추가하고 출력 객체에 해당 경로의 값을 설정합니다.
이 절은 선택 사항입니다.
- value1, value2, ...
-
SUPER 유형 값으로 해석되는 식입니다. 참고로 숫자, 텍스트, 부울 유형은 SUPER로 해석할 수 있습니다.
반환 타입
SUPER
사용 노트
OBJECT_TRANSFORM은 KEEP에 지정된 입력의 경로 값과 SET에 지정된 경로 및 값 쌍을 포함하는 SUPER 유형 객체를 반환합니다.
KEEP과 SET가 모두 비어 있는 경우 OBJECT_TRANSFORM은 입력을 반환합니다.
입력이 SUPER 유형 객체가 아닌 경우 OBJECT_TRANSFORM은 KEEP 또는 SET 값과 관계없이 입력을 반환합니다.
예제
다음 예시에서는 SUPER 객체를 다른 SUPER 객체로 변환합니다.
CREATE TABLE employees (
col_person SUPER
);
INSERT INTO employees
VALUES
(
json_parse('
{
"name": {
"first": "John",
"last": "Doe"
},
"age": 25,
"ssn": "111-22-3333",
"company": "Company Inc.",
"country": "U.S."
}
')
),
(
json_parse('
{
"name": {
"first": "Jane",
"last": "Appleseed"
},
"age": 34,
"ssn": "444-55-7777",
"company": "Organization Org.",
"country": "Ukraine"
}
')
)
;
SELECT
OBJECT_TRANSFORM(
col_person
KEEP
'"name"."first"',
'"age"',
'"company"',
'"country"'
SET
'"name"."first"', UPPER(col_person.name.first::TEXT),
'"age"', col_person.age + 5,
'"company"', 'Amazon'
) AS col_person_transformed
FROM employees;
--This result is formatted for ease of reading.
col_person_transformed
-------------------------------------------------------------
{
"name": {
"first": "JOHN"
},
"age": 30,
"company": "Amazon",
"country": "U.S."
}
{
"name": {
"first": "JANE"
},
"age": 39,
"company": "Amazon",
"country": "Ukraine"
}