如何检查一个数组是否包含另一个数组的任何元素
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
我这里有一个数组 ["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