array_filter
指定されたフィルターに一致する配列から値を返します。
この関数は次の2つの形式で使用できます。ラムダの採用により、より柔軟な配列フィルタリングが可能になります。ラムダ関数の詳細については、Lambda expressionを参照してください。この関数は v2.5 からサポートされています。
Syntax
array_filter(array, array<bool>)
array_filter(lambda_function, arr1,arr2...)
-
array_filter(array, array<bool>)array<bool>に一致する配列から値を返します。 -
array_filter(lambda_function, arr1,arr2...)ラムダ関数に一致する配列から値を返します。
Parameters
array: 値をフィルタリングする配列。
array<bool>: 値をフィルタリングするために使用される式。
lambda_function: 値をフィルタリングするために使用されるラムダ関数。
Usage notes
array_filter(array, array<bool>)の2つの入力パラメータは ARRAY でなければならず、フィルター式はarray<bool>に評価されることができます。array_filter(lambda_function, arr1,arr2...)のラムダ関数は array_map() の使用ノートに従います。- 入力配列が null の場合、null が返されます。フィルター配列が null の場合、空の配列が返されます。
Examples
-
ラムダ関数を使用しない例
-- 配列内のすべての要素がフィルターに一致します。select array_filter([1,2,3],[1,1,1]);+------------------------------------+| array_filter([1, 2, 3], [1, 1, 1]) |+------------------------------------+| [1,2,3] |+------------------------------------+1 row in set (0.01 sec)-- フィルターが null であり、空の配列が返されます。select array_filter([1,2,3],null);+-------------------------------+| array_filter([1, 2, 3], NULL) |+-------------------------------+| [] |+-------------------------------+1 row in set (0.01 sec)-- 入力配列が null の場合、null が返されます。select array_filter(null,[1]);+-------------------------+| array_filter(NULL, [1]) |+-------------------------+| NULL |+-------------------------+-- 入力配列とフィルターの両方が null の場合、null が返されます。select array_filter(null,null);+--------------------------+| array_filter(NULL, NULL) |+--------------------------+| NULL |+--------------------------+1 row in set (0.01 sec)-- フィルターに null 要素が含まれており、空の配列が返されます。select array_filter([1,2,3],[null]);+---------------------------------+| array_filter([1, 2, 3], [NULL]) |+---------------------------------+| [] |+---------------------------------+1 row in set (0.01 sec)-- フィルターに2つの null 要素が含まれており、空の配列が返されます。select array_filter([1,2,3],[null,null]);+---------------------------------------+| array_filter([1, 2, 3], [NULL, NULL]) |+---------------------------------------+| [] |+---------------------------------------+1 row in set (0.00 sec)-- フィルターに一致する要素は1つだけです。select array_filter([1,2,3],[null,1,0]);+---------------------------------------+| array_filter([1, 2, 3], [NULL, 1, 0]) |+---------------------------------------+| [2] |+---------------------------------------+1 row in set (0.00 sec) -
ラムダ関数を使用する例
-- x の要素が y の要素より小さいものを返します。select array_filter((x,y) -> x < y, [1,2,null], [4,5,6]);+--------------------------------------------------------+| array_filter((x, y) -> x < y, [1, 2, NULL], [4, 5, 6]) |+--------------------------------------------------------+| [1,2] |+--------------------------------------------------------+