Перейти к содержимому
Последнее обновление

MAP_FROM_ARRAYS

Описание​

Создаёт MAP<K, V> из массива ключей и массива значений. Элементы на одинаковых позициях образуют пары «ключ-значение».

Синтаксис​

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