跳到主要内容
最后 更新

MAP_FROM_ARRAYS

描述

根据键数组和值数组构造 MAP<K, V>。两个数组中相同位置的元素组成一个键值对。

备注

自 Apache Doris 4.2 起支持该函数。

语法

MAP_FROM_ARRAYS(<keys>, <values>)

参数

参数描述
<keys>ARRAY<K> 类型。K 必须是 MAP 键支持的类型。数组本身及数组元素都可以为 NULL
<values>ARRAY<V> 类型。数组本身及数组元素都可以为 NULL。两个数组均非 NULL 时,元素数量必须与 <keys> 相同。

返回值

返回 MAP<K, V>

  • 任一输入数组为 NULL 时,返回 NULL
  • 数组中的 NULL 元素会作为 NULL 键或值保留在结果中。
  • 两个数组均非 NULL 且长度不同时,报错;任一数组为 NULL 时,不校验另一个数组的长度。
  • 同一个键出现多次时,保留最后一次出现的值。
  • 参数不是数组,或 K 不是 MAP 键支持的类型时,在分析阶段报错。

示例

SELECT map_from_arrays([1, 2], [10, 20]) AS result;
+--------------+
| result |
+--------------+
| {1:10, 2:20} |
+--------------+
SELECT map_from_arrays([1, 1], [10, 20]) AS result;
+--------+
| result |
+--------+
| {1:20} |
+--------+
SELECT map_from_arrays(CAST(NULL AS ARRAY<INT>), [10]);
+-------------------------------------------------+
| map_from_arrays(CAST(NULL AS ARRAY<INT>), [10]) |
+-------------------------------------------------+
| NULL |
+-------------------------------------------------+
SELECT map_from_arrays(
array(CAST(NULL AS INT), 2),
array(10, CAST(NULL AS INT))) AS result;
+-------------------+
| result |
+-------------------+
| {null:10, 2:null} |
+-------------------+
SELECT map_from_arrays([1, 2], [10]);
ERROR 1105 (HY000): The key and value array offsets of function map_from_arrays must be identical