34

PostgreSQL では、次のようなクエリを実行できることを知っています。

SELECT (1 = ANY('{1,3,4,7}'::int[])) AS result右側の配列に要素が含まれているかどうかを確認します1。右側の配列に左側の配列の要素が含まれているかどうかを確認する簡単な方法があるかどうか疑問に思っていました。何かのようなもの:

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

左側のループを自分で反復せずにこれを行う簡単な方法はありますか?

4

2 に答える 2

65

もちろん、&&配列オーバーラップ演算子を使用します。

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

配列関数と演算子を参照してください。

于 2014-02-13T00:46:18.513 に答える
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;
于 2014-02-13T00:48:09.163 に答える