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

Posted

技术标签:

【中文标题】如何检查一个数组是不是包含另一个数组的任何元素【英文标题】:How to check if an array contains any elements of another array如何检查一个数组是否包含另一个数组的任何元素 【发布时间】:2022-01-09 20:42:29 【问题描述】:

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

例子:

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

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

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

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

【问题讨论】:

【参考方案1】:

检查 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

【讨论】:

太好了。谢谢你!

以上是关于如何检查一个数组是不是包含另一个数组的任何元素的主要内容,如果未能解决你的问题,请参考以下文章