我知道在PostgreSQL中你可以运行如下的查询:
SELECT (1 = ANY('{1,3,4,7}'::int[])) AS result
检查右侧数组是否包含元素1
。我想知道是否有一种简单的方法来检查右手数组是否包含左手数组中的任何元素。类似的东西:
SELECT ('{2,3}'::int[] = ANY('{1,3,4,7}'::int[])) AS result
有没有一种简单的方法可以在不自行迭代左侧循环的情况下执行此操作?
答案 0 :(得分:32)
答案 1 :(得分:3)
假设您的输入是数组,但可以使用unnest()
解包它们,这是一个解决方案:
SELECT count(*)>0
FROM
(SELECT unnest('{2,3}'::int[]) a1) t1
join (SELECT unnest('{1,3,4,7}'::int[]) a2) t2
on t1.a1=t2.a2;