类别:

半结构化和结构化数据函数 (数组/对象)

OBJECT_PICK

返回一个新 OBJECT,它包含现有对象中的一些键值对。

若要标识要包含在新对象中的键值对,请将键作为实参传递,或传递给包含键的数组。

如果输入对象中不存在指定的键,则忽略该键。

语法

OBJECT_PICK( <object>, <key1> [, <key2>, ... ] )

OBJECT_PICK( <object>, <array> )
Copy

实参

object

输入对象。

key1key2

一个或多个键,用于标识应包含于返回对象的键值对。

array

键数组,用于标识应包含于返回对象的键值对。

返回

返回一个新 OBJECT,它包含指定的键值对。

使用说明

对于 结构化 OBJECTs

  • 对于作为键的实参,您必须指定常量。

  • 不能将键的 ARRAY 作为第二个实参进行传递。必须将每个键指定为单独的实参。

  • 该函数返回一个结构化的 OBJECT。OBJECT 的类型包括按指定顺序排列的键。

    例如,假设您按以下顺序选择 statecity 键:

    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);
    
    Copy

    该函数返回类型 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   |
| }          |
+------------+
Copy

在上面的示例中,键作为实参传递给 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   |
| }          |
+------------+
Copy
语言: 中文