类别:

半结构化和结构化数据函数 (映射)

MAP_ENTRIES

MAP 值中的每个条目返回一个键值对对象的 ARRAY 值。

语法

MAP_ENTRIES( <map> )

实参

map

输入 MAP 值。

返回

返回一个 ARRAY 值,其中每个元素对应输入 MAP 值中的一个条目,并包含 key 字段和 value 字段构成的 OBJECT 对象。

如果 map 为 NULL,则函数返回 NULL。

如果 map 为空,则函数返回空 ARRAY 值。

返回的 ARRAY 值中各条目的顺序是不确定的。

使用说明

  • 该函数只接受一个实参。调用不带实参或多个实参的函数会导致错误。

示例

将 MAP 值中的条目作为键值对对象返回:

SELECT MAP_ENTRIES({'a': 1, 'b': 2}::MAP(VARCHAR, INT)) AS entries;
+-----------------+
| ENTRIES         |
|-----------------|
| [               |
|   {             |
|     "key": "a", |
|     "value": 1  |
|   },            |
|   {             |
|     "key": "b", |
|     "value": 2  |
|   }             |
| ]               |
+-----------------+

针对空的 MAP 值,返回一个空的 ARRAY 值:

SELECT MAP_ENTRIES({}::MAP(VARCHAR, INT)) AS entries;
+---------+
| ENTRIES |
|---------|
| []      |
+---------+

返回 MAP 中的条目,其值的数据类型为 ARRAY:

SELECT MAP_ENTRIES({'a': [1, 2, 3], 'b': [4, 5]}::MAP(VARCHAR, ARRAY(INT))) AS entries;
+-----------------+
| ENTRIES         |
|-----------------|
| [               |
|   {             |
|     "key": "a", |
|     "value": [  |
|       1,        |
|       2,        |
|       3         |
|     ]           |
|   },            |
|   {             |
|     "key": "b", |
|     "value": [  |
|       4,        |
|       5         |
|     ]           |
|   }             |
| ]               |
+-----------------+

针对 NULL 输入,返回 NULL:

SELECT MAP_ENTRIES(NULL::MAP(VARCHAR, INT)) AS entries;
+---------+
| ENTRIES |
|---------|
| NULL    |
+---------+