- 类别:
半结构化和结构化数据函数 (数组/对象)
OBJECT_PICK¶
返回一个新 OBJECT,它包含现有对象中的一些键值对。
若要标识要包含在新对象中的键值对,请将键作为实参传递,或传递给包含键的数组。
如果输入对象中不存在指定的键,则忽略该键。
语法¶
OBJECT_PICK( <object>, <key1> [, <key2>, ... ] )
OBJECT_PICK( <object>, <array> )
实参¶
object
输入对象。
key1
、key2
一个或多个键,用于标识应包含于返回对象的键值对。
array
键数组,用于标识应包含于返回对象的键值对。
返回¶
返回一个新 OBJECT,它包含指定的键值对。
使用说明¶
对于 结构化 OBJECTs:
对于作为键的实参,您必须指定常量。
不能将键的 ARRAY 作为第二个实参进行传递。必须将每个键指定为单独的实参。
该函数返回一个结构化的 OBJECT。OBJECT 的类型包括按指定顺序排列的键。
例如,假设您按以下顺序选择
state
和city
键:SELECT OBJECT_PICK( {'city':'San Mateo','state':'CA','zip_code':94402}::OBJECT(city VARCHAR,state VARCHAR,zip_code DOUBLE), 'state', 'city') AS new_object, SYSTEM$TYPEOF(new_object);
该函数返回类型
OBJECT(state VARCHAR, city VARCHAR)
的 OBJECT。+-----------------------+--------------------------------------------------------------+ | NEW_OBJECT | SYSTEM$TYPEOF(NEW_OBJECT) | |-----------------------+--------------------------------------------------------------| | { | OBJECT(state VARCHAR(16777216), city VARCHAR(16777216))[LOB] | | "state": "CA", | | | "city": "San Mateo" | | | } | | +-----------------------+--------------------------------------------------------------+
示例¶
以下示例调用 OBJECT_PICK 来创建一个新对象,该对象包含现有对象中的三个键值对中的两个:
SELECT OBJECT_PICK( OBJECT_CONSTRUCT( 'a', 1, 'b', 2, 'c', 3 ), 'a', 'b' ) AS new_object; +------------+ | NEW_OBJECT | |------------| | { | | "a": 1, | | "b": 2 | | } | +------------+
在上面的示例中,键作为实参传递给 OBJECT_PICK。您还可以使用数组来指定键,如下所示:
SELECT OBJECT_PICK( OBJECT_CONSTRUCT( 'a', 1, 'b', 2, 'c', 3 ), ARRAY_CONSTRUCT('a', 'b') ) AS new_object; +------------+ | NEW_OBJECT | |------------| | { | | "a": 1, | | "b": 2 | | } | +------------+