transform_values
Преобразует значения в map с использованием Lambda-выражения и создает новое значение для каждой записи в map.
Эта функция поддерживается начиная с версии v1.5.2.
Синтаксис
MAP transform_values(lambda_func, any_map)
lambda_func также может быть размещена после any_map:
MAP transform_values(any_map, lambda_func)
Параметры
-
any_map: Map. -
lambda_func: Lambda-выражение, которое вы хотите применить кany_map.
Возвращаемое значение
Возвращает значение map, где типы данных значений определяются результатом Lambda-выражения, а типы данных ключей совпадают с ключами в any_map.
Если любой входной параметр равен NULL, возвращается NULL.
Если ключ или значение в исходном map равны NULL, NULL обрабатывается как обычное значение.
Lambda-выражение должно иметь два параметра. Первый параметр представляет ключ. Второй параметр представляет значение.
Примеры
Следующий пример использует map_from_arrays для генерации значения map {1:"ab",3:"cdd",2:null,null:"abc"}. Затем Lambda-выражение применяется к каждому значению map. Первый пример изменяет значение каждой пары ключ-значение на 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)