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