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

Lan*_*der 20 arrays postgresql

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

SELECT (1 = ANY('{1,3,4,7}'::int[])) AS result检查右侧数组是否包含该元素1.我想知道是否有一种简单的方法可以检查右侧数组是否包含左侧数组中的任何元素.就像是:

SELECT ('{2,3}'::int[] = ANY('{1,3,4,7}'::int[])) AS result

有没有一种简单的方法可以做到这一点,而无需自己迭代左侧循环?

Cra*_*ger 39

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

SELECT ARRAY[1,2] && ARRAY[1,3,4,7];
Run Code Online (Sandbox Code Playgroud)

请参阅数组函数和运算符.


Dan*_*ing 5

假设您的输入是数组,但可以使用 展开它们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;
Run Code Online (Sandbox Code Playgroud)