OBJECT_TRANSFORM 函数
转换 SUPER 对象。
语法
OBJECT_TRANSFORM( input [KEEP path1, ...] [SET path1, value1, ..., ... ] )
参数
- input
-
解析为 SUPER 类型对象的表达式。
- KEEP
-
此子句中指定的所有路径值都将保留并传递到输出对象。
此子句是可选的。
- path1、path2...
-
常量字符串文本,格式为双引号路径组成部分,以句点分隔。例如,
'"a"."b"."c"'
是一个有效的路径值。这适用于 KEEP 和 SET 子句中的路径参数。 - SET
-
路径和值对,可修改现有路径或添加新路径,并在输出对象中设置该路径的值。
此子句是可选的。
- value1、value2...
-
解析为 SUPER 类型值的表达式。请注意,数值、文本和布尔类型可解析为 SUPER。
返回类型
SUPER
使用说明
OBJECT_TRANSFORM 返回一个 SUPER 类型对象,其中包含在 KEEP 中指定的输入路径值以及在 SET 中指定的路径和值对。
如果 KEEP 和 SET 都为空,则 OBJECT_TRANSFORM 返回输入。
如果输入不是 SUPER 类型对象,则无论 KEEP 或 SET 值如何,OBJECT_TRANSFORM 都会返回输入。
示例
以下示例将一个 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" }