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

all_match

Описание

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

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

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

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

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

Синтаксис

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