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

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] |
    +--------------------------------------------------------+