如何检查一个数组是否包含另一个数组的任何元素

How to check if an array contains any elements of another array

我这里有一个数组 ["chair","desk","charger"],我想检查另一个数组是否包含第一个数组中的任何元素。

示例:

["chair","desk"] //returns true;

["screen","charger","computer"] //returns true;

["calendar", "screen"] //returns false;

如何在 Presto 中做到这一点 SQL?

检查 array_intersect(x, y) 函数返回的数组的基数。

演示:

with mydata as (
select 1 id, array['chair','desk'] as myarray union all
select 2 id, array['screen','charger','computer']  union all
select 3 id, array['calendar', 'screen']
)

select id, 
       cardinality(array_intersect(myarray, array['chair','desk','charger']))>0 as contains_flag
  from mydata
 order by id

结果:

id  contains_flag
1   TRUE
2   TRUE
3   FALSE