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

transform_keys

transform_keys

説明

マップ内のキーをラムダ式を使用して変換し、マップ内の各エントリに対して新しいキーを生成します。

この関数はv3.1以降でサポートされています。

構文

MAP transform_keys(lambda_func, any_map)

lambda_funcany_mapの後に配置することもできます。

MAP transform_keys(any_map, lambda_func)

パラメータ

  • any_map: マップ。
  • lambda_func: any_mapに適用するラムダ式。

返り値

キーのデータ型はラムダ式の結果によって決定され、値のデータ型はany_map内の値と同じです。

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

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

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

次の例では、map_from_arraysを使用してマップ値{1:"ab",3:"cdd",2:null,null:"abc"}を生成します。その後、ラムダ式が各キーに適用され、キーを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"} |
+------------------------------------------+