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

transform_values

Описание

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

Эта функция поддерживается начиная с версии 1.5.0.

Синтаксис

MAP transform_values(lambda_func, any_map)

lambda_func также может быть размещена после any_map:

MAP transform_values(any_map, lambda_func)

Параметры

  • any_map: карта.

  • lambda_func: Lambda-выражение, которое вы хотите применить к any_map.

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

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

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

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

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

Примеры

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

mysql> select transform_values((k,v)->1, col_map) from (select map_from_arrays([1,3,null,2,null],['ab','cdd',null,null,'abc']) as col_map)A;
+----------------------------------------+
| transform_values((k, v) -> 1, col_map) |
+----------------------------------------+
| {1:1,3:1,2:1,null:1} |
+----------------------------------------+
1 row in set (0.02 sec)

mysql> select transform_values((k,v)->null, col_map) from (select map_from_arrays([1,3,null,2,null],['ab','cdd',null,null,'abc']) as col_map)A;
+--------------------------------------------+
| transform_values((k, v) -> NULL, col_map) |
+--------------------------------------------+
| {1:null,3:null,2:null,null:null} |
+--------------------------------------------+
1 row in set (0.01 sec)