ANY_MATCH

判断ARRAY数组a中是否存在元素满足predicate条件。

命令格式

boolean any_match(array<T> <a>, function<T, boolean> <predicate>)

参数说明

  • a:必填。ARRAY数组。array<T>中的T指代ARRAY数组元素的数据类型,数组中的元素可以为任意类型。

  • predicate:必填。用于对ARRAY数组a中的元素进行判断的函数(内建函数或自定义函数)或表达式。输入参数的数据类型必须与ARRAY数组a中元素的数据类型一致。

返回值说明

返回BOOLEAN类型。返回规则如下:

  • 如果ARRAY数组a中存在一个或多个元素满足predicate条件,返回结果为True。

  • 如果ARRAY数组a中没有元素满足predicate条件或ARRAY数组为空,返回结果为False。

  • 如果ARRAY数组a中存在元素为NULL,且其他元素都不满足predicate条件,返回结果为NULL。

使用示例

  • 示例1:判断ARRAY数组array(1, 2, -10, 100, -30)中是否有元素满足xx > 3条件。命令示例如下。

    --返回true。
    select any_match(array(1, 2, -10, 100, -30), x-> x > 3);
  • 示例2:ARRAY数组为空。命令示例如下。

    --返回false。
    select any_match(array(), x-> x > 3);
  • 示例3:判断ARRAY数组array(1, 2, -10, -20, -30)中是否有元素满足x-> x > 3条件。命令示例如下。

    --返回false。
    select any_match(array(1, 2, -10, -20, -30), x-> x > 3);
  • 示例4:判断存在NULL元素的ARRAY数组array(1, 2, null, -10)中是否有元素满足x-> x > 3条件。命令示例如下。

    --返回NULL。
    select any_match(array(1, 2, null, -10), x-> x > 3);

相关函数

  • ANY_MATCH函数属于复杂类型函数,更多对复杂类型数据(例如ARRAY、MAP、STRUCT、JSON数据)的处理函数请参见复杂类型函数

  • ANY_MATCH函数使用示例中涉及->的使用,关于Lambda函数->的介绍,详情请参见Lambda函数