Arrays PostgreSQL检查数组是否包含左侧数组中的任何元素

Arrays PostgreSQL检查数组是否包含左侧数组中的任何元素,arrays,postgresql,set-intersection,Arrays,Postgresql,Set Intersection,我知道在PostgreSQL中,您可以运行如下查询: 选择(1=ANY({1,3,4,7})::int[])作为结果检查右侧数组是否包含元素1。我想知道是否有一种简单的方法可以检查右侧数组是否包含左侧数组中的任何元素。比如: 选择('{2,3}'::int[]=ANY('{1,3,4,7}'::int[])作为结果 有没有一种简单的方法可以在不迭代左侧循环的情况下执行此操作?当然,请使用&&数组重叠运算符: SELECT ARRAY[1,2] && ARRAY[1,3,4,7];

我知道在PostgreSQL中,您可以运行如下查询:

选择(1=ANY({1,3,4,7})::int[])作为结果
检查右侧数组是否包含元素
1
。我想知道是否有一种简单的方法可以检查右侧数组是否包含左侧数组中的任何元素。比如:

选择('{2,3}'::int[]=ANY('{1,3,4,7}'::int[])作为结果


有没有一种简单的方法可以在不迭代左侧循环的情况下执行此操作?

当然,请使用
&&
数组重叠运算符:

SELECT ARRAY[1,2] && ARRAY[1,3,4,7];

请参阅。

假设您的输入是数组,但可以使用
unest()
将其展开,以下是一个解决方案:

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;

哦,
&&
更简洁,希望更快。对。谢谢你的回答,因为它教会了我更多关于Postgres阵列的可能性。太棒了!正是我想要的。谢谢。如果在PostgreSQL命令中运行,它将正常工作。但是你能告诉我用代码运行相同查询的方法吗@SqlQuery(“选择数组[1,2]&&&@VijayShegokar您的问题似乎是”我如何用我的语言绑定数组参数。请在搜索该主题的现有问题后发布一个新问题。@CraigRinger-这是我的问题,这也是一个关键词问题,因为文档使用了术语重叠,这是正确的,但不是很数学化,如果有重叠,我们可以说是数组(我们的集合)具有交叉点和相交点。这也是在引入阵列后的一段时间内添加的,因此在旧问题中不建议作为解决方案,因为8.2: