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

transform_keys

Описание

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

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

Синтаксис

MAP transform_keys(lambda_func, any_map)

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

MAP transform_keys(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.

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"} |
+------------------------------------------+