Перейти к основному содержимому

any_match

Описание

Возвращает, соответствует ли любой элемент массива заданному предикату.

  • Возвращает true (1), если один или несколько элементов соответствуют предикату.

  • Возвращает false (0), если ни один из элементов не соответствует (особый случай — когда массив пуст).

  • Возвращает NULL, если предикат возвращает NULL для одного или нескольких элементов и false для всех остальных элементов.

Эта функция поддерживается начиная с версии 1.5.0.

Синтаксис

any_match(lambda_function, arr1, arr2...)

Возвращает, соответствует ли любой элемент arr1 заданному предикату в лямбда-функции.

Параметры

  • arr1: массив для сопоставления.

  • arrN: дополнительные массивы, используемые в лямбда-функции.

  • lambda_function: лямбда-функция, используемая для сопоставления значений.

Возвращаемое значение

Возвращает значение типа BOOLEAN.

Примечания по использованию

  • Лямбда-функция следует примечаниям по использованию в array_map().
  • Если входной массив равен null или лямбда-функция возвращает 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 |
+---------------------------------------------+