all_match
all_match
説明
配列のすべての要素が与えられた述語と一致するかどうかを返します。
- 配列が空の場合を除いて、すべての要素が述語に一致する場合には
true
(1) を返します。 - 1つ以上の要素が一致しない場合には
false
(0) を返します。 - 1つ以上の要素がNULLを返し、他の要素がすべて
true
を返す場合には、NULLを返します。
この関数はv3.0.6以降でサポートされています。
構文
all_match(lambda_function, arr1, arr2...)
arr1
のすべての要素が、ラムダ関数の述語に一致するかどうかを返します。
パラメータ
arr1
: マッチさせる配列。arrN
: ラムダ関数に使用されるオプションの配列。lambda_function
: 値をマッチさせるために使用されるラムダ関数。
戻り値
BOOLEAN値を返します。
使用上の注意
- ラムダ関数は array_map() の使用上の注意に従います。
- 入力配列がnullであるか、ラムダ関数の結果がnullである場合、nullが返されます。
arr1
が空の場合、true
が返されます。- MAPにこの関数を適用する場合は、
all_match((k,v)->k>v,map)
をall_match(map_values(transform_values((k,v)->k>v, map)))
に書き換えます。例えば、select all_match(map_values(transform_values((k,v)->k>v, map{2:1})));
は1を返します。
例
x
のすべての要素が y
の要素よりも小さいかどうかをチェックします。
select all_match((x,y) -> x < y, [1,2,-8], [4,5,6]);
+---------------------------------------------------+
| all_match((x, y) -> x < y, [1, 2, -8], [4, 5, 6]) |
+---------------------------------------------------+
| 1 |
+---------------------------------------------------+
select all_match((x,y) -> x < y, [1,2,null], [4,5,6]);
+-----------------------------------------------------+
| all_match((x, y) -> x < y, [1, 2, NULL], [4, 5, 6]) |
+-----------------------------------------------------+
| NULL |
+-----------------------------------------------------+
select all_match((x,y) -> x < y, [1,2,8], [4,5,6]);
+--------------------------------------------------+
| all_match((x, y) -> x < y, [1, 2, 8], [4, 5, 6]) |
+--------------------------------------------------+
| 0 |
+--------------------------------------------------+
select all_match((x,y) -> x < y, [], []);
+------------------------------------+
| all_match((x, y) -> x < y, [], []) |
+------------------------------------+
| 1 |
+------------------------------------+
select all_match((x,y) -> x < y, null, [4,5,6]);
+---------------------------------------------+
| all_match((x, y) -> x < y, NULL, [4, 5, 6]) |
+---------------------------------------------+
| NULL |
+---------------------------------------------+