メインコンテンツまでスキップ
バージョン: Stable-3.3

map_apply

説明

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

構文

MAP map_apply(lambda_func, any_map)

パラメータ

  • lambda_func: Lambda expression。

  • any_map: Lambda expression が適用される map。

戻り値

map 値を返します。結果の map のキーと値のデータ型は、Lambda expression の結果によって決まります。

入力パラメータが NULL の場合、NULL が返されます。

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

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

次の例では、map_from_arrays() を使用して map 値 {1:"ab",3:"cd"} を生成します。その後、Lambda expression は各キーを 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 |
+--------------------------------------------------+