メインコンテンツまでスキップ

map_apply

map_apply

説明

元のMapのキーと値にラムダ式を適用し、新しいMapを生成します。この関数はv3.0からサポートされています。

構文

MAP map_apply(lambda_func, any_map)

パラメータ

  • lambda_func: ラムダ式です。
  • any_map: ラムダ式が適用されるMapです。

戻り値

Mapの値を返します。結果のMapのキーと値のデータ型は、ラムダ式の結果によって決まります。

入力パラメータがどれか一つでもNULLの場合、NULLが返されます。

元のMapのキーまたは値がNULLの場合、NULLは通常の値として処理されます。

ラムダ式は2つのパラメータを持つ必要があります。最初のパラメータはキーを表し、2番目のパラメータは値を表します。

以下の例では、map_from_arrays()を使用してマップ値{1:"ab",3:"cd"}を生成します。そして、ラムダ式を使って各キーを1つずつ増やし、各値の長さを計算します。例えば、"ab"の長さは2です。

mysql> select map_apply((k,v)->(k+1,length(v)), col_map)
from (select map_from_arrays([1,3],["ab","cd"]) as col_map)A;
+--------------------------------------------------+
| map_apply((k, v) -> (k + 1, length(v)), col_map) |
+--------------------------------------------------+
| {2:2,4:2} |
+--------------------------------------------------+
1 row in set (0.01 sec)

mysql> select map_apply((k,v)->(k+1,length(v)), col_map)
from (select map_from_arrays(null,null) as col_map)A;
+--------------------------------------------------+
| map_apply((k, v) -> (k + 1, length(v)), col_map) |
+--------------------------------------------------+
| NULL |
+--------------------------------------------------+
1 row in set (0.02 sec)

mysql> select map_apply((k,v)->(k+1,length(v)), col_map)
from (select map_from_arrays([1,null],["ab","cd"]) as col_map)A;
+--------------------------------------------------+
| map_apply((k, v) -> (k + 1, length(v)), col_map) |
+--------------------------------------------------+
| NULL |
+--------------------------------------------------+