ARRAYS_OVERLAP

判断ARRAY数组ab是否存在相同元素。

命令格式

boolean arrays_overlap(array<T> <a>,  array<T> <b>)

参数说明

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

数组中的元素可以为如下类型:

  • TINYINT、SMALLINT、INT、BIGINT

  • FLOAT、DOUBLE

  • BOOLEAN

  • DECIMAL、DECIMALVAL

  • DATE、DATETIME、TIMESTAMP、IntervalDayTime、IntervalYearMonth

  • STRING、BINARY、VARCHAR、CHAR

  • ARRAY、STRUCT、MAP

返回值说明

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

  • 如果ARRAY数组a中至少包含ARRAY数组b中的一个非NULL元素,返回结果为True。

  • 如果ARRAY数组ab中没有公共元素、都非空,且其中任意一个数组中包含NULL元素,返回结果为NULL。

  • 如果ARRAY数组ab中没有公共元素、都非空,且其中任意一个数组中都不包含NULL元素,返回结果为False。

使用示例

  • 示例1:判断ARRAY数组array(1, 2, 3)array(3, 4, 5)中是否存在相同元素。命令示例如下。

    --返回true。
    select arrays_overlap(array(1, 2, 3), array(3, 4, 5));
  • 示例2:判断ARRAY数组array(1, 2, 3)array(6, 4, 5)中是否存在相同元素。命令示例如下。

    --返回false。
    select arrays_overlap(array(1, 2, 3), array(6, 4, 5));
  • 示例3:任一ARRAY数组中存在NULL元素。命令示例如下。

    --返回NULL。
    select arrays_overlap(array(1, 2, 3), array(5, 4, null));

相关函数

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