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

map_apply

Описание

Применяет Lambda-выражение к ключам и значениям исходного Map и генерирует новый Map. Эта функция поддерживается начиная с версии 1.5.0.

Синтаксис

MAP map_apply(lambda_func, any_map)

Параметры

  • lambda_func: Lambda-выражение.

  • any_map: карта, к которой применяется Lambda-выражение.

Возвращаемое значение

Возвращает значение карты. Типы данных ключей и значений в результирующей карте определяются результатом Lambda-выражения.

Если любой входной параметр равен NULL, возвращается NULL.

Если ключ или значение в исходной карте равно NULL, NULL обрабатывается как обычное значение.

Lambda-выражение должно иметь два параметра. Первый параметр представляет ключ. Второй параметр представляет значение.

Примеры

Следующий пример использует map_from_arrays() для генерации значения карты {1:"ab",3:"cd"}. Затем Lambda-выражение увеличивает каждый ключ на 1 и вычисляет длину каждого значения. Например, длина "ab" равна 2.

mysql> select map_apply((k,v)->(k+1,length(v)), col_map)
from (select map_from_arrays([1,3],["ab","cd"]) as col_map)A;
+--------------------------------------------------+
| map_apply((k, v) -> (k + 1, length(v)), col_map) |
+--------------------------------------------------+
| {2:2,4:2} |
+--------------------------------------------------+
1 row in set (0.01 sec)

mysql> select map_apply((k,v)->(k+1,length(v)), col_map)
from (select map_from_arrays(null,null) as col_map)A;
+--------------------------------------------------+
| map_apply((k, v) -> (k + 1, length(v)), col_map) |
+--------------------------------------------------+
| NULL |
+--------------------------------------------------+
1 row in set (0.02 sec)

mysql> select map_apply((k,v)->(k+1,length(v)), col_map)
from (select map_from_arrays([1,null],["ab","cd"]) as col_map)A;
+--------------------------------------------------+
| map_apply((k, v) -> (k + 1, length(v)), col_map) |
+--------------------------------------------------+
| NULL |
+--------------------------------------------------+