类别:

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

OBJECT_KEYS

返回一个数组,它包含输入对象最顶层键的列表。

语法

OBJECT_KEYS( <object> )
Copy

实参

object

需要键值的值。输入值必须为下列之一:

返回

该函数返回一个包含键的 ARRAY

如果 object结构化 OBJECT,则函数返回一个 ARRAY (VARCHAR)。

使用说明

  • 如果对象包含嵌套对象(例如对象中的对象),则仅返回最顶层的键。

示例

基本示例

下一个示例演示 OBJECT_KEYS 如何同时处理 OBJECT 和包含 OBJECT 类型的值的 VARIANT

创建一个包含 OBJECTVARIANT 类型列的表。

CREATE TABLE objects_1 (id INTEGER, object1 OBJECT, variant1 VARIANT);
Copy

INSERT 值:

INSERT INTO objects_1 (id, object1, variant1) 
  SELECT
    1,
    OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3),
    TO_VARIANT(OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3))
    ;
Copy

从 OBJECT 和 VARIANT 中检索键值:

SELECT OBJECT_KEYS(object1), OBJECT_KEYS(variant1) 
    FROM objects_1
    ORDER BY id;
+----------------------+-----------------------+
| OBJECT_KEYS(OBJECT1) | OBJECT_KEYS(VARIANT1) |
|----------------------+-----------------------|
| [                    | [                     |
|   "a",               |   "a",                |
|   "b",               |   "b",                |
|   "c"                |   "c"                 |
| ]                    | ]                     |
+----------------------+-----------------------+
Copy

嵌套对象示例

此示例显示,如果对象包含嵌套对象,则仅返回最顶层的键。

SELECT OBJECT_KEYS (
           PARSE_JSON (
               '{
                    "level_1_A": {
                                 "level_2": "two"
                                 },
                    "level_1_B": "one"
                    }'
               )
           ) AS keys
    ORDER BY 1;
+----------------+
| KEYS           |
|----------------|
| [              |
|   "level_1_A", |
|   "level_1_B"  |
| ]              |
+----------------+
Copy
语言: 中文