私はPostgreSQLで次のようなクエリを実行できることを知っています:
SELECT (1 = ANY('{1,3,4,7}'::int[])) AS result
は、右側の配列に要素_1
_が含まれているかどうかを確認します。右側の配列にleft-hand配列の要素が含まれているかどうかを確認する簡単な方法があるかどうか疑問に思いました。何かのようなもの:
SELECT ('{2,3}'::int[] = ANY('{1,3,4,7}'::int[])) AS result
左側のループを自分で繰り返すことなくこれを行う簡単な方法はありますか?
入力が配列であると仮定しますが、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;