跳到主要内容
版本: 最新版本-3.5

transform_values

使用Lambda 表达式转换 Map 中的值,并为 Map 中的每个条目生成一个新值。

此函数从 v3.1 版本开始支持。

语法

MAP transform_values(lambda_func, any_map)

lambda_func 也可以放在 any_map 之后

MAP transform_values(any_map, lambda_func)

参数

  • any_map: Map。

  • lambda_func: 要应用于 any_map 的 Lambda 表达式。

返回值

返回一个 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)