transform_keys
Преобразует ключи в map с использованием Lambda-выражения и создает новый ключ для каждой записи в map.
Эта функция поддерживается начиная с версии v1.5.2.
Синтаксис
MAP transform_keys(lambda_func, any_map)
lambda_func также может быть размещена после any_map:
MAP transform_keys(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-выражение применяется к каждому ключу для увеличения ключа на 1.
mysql> select transform_keys((k,v)->(k+1), col_map) from (select map_from_arrays([1,3,null,2,null],['ab','cdd',null,null,'abc']) as col_map)A;
+------------------------------------------+
| transform_keys((k, v) -> k + 1, col_map) |
+------------------------------------------+
| {2:"ab",4:"cdd",3:null,null:"abc"} |
+------------------------------------------+