Postgres配列に値が存在するかどうかを確認する 質問する

Postgres配列に値が存在するかどうかを確認する 質問する

Postgres 9.0 を使用する場合、特定の配列に値が存在するかどうかをテストする方法が必要です。これまでのところ、次のような方法を思いつきました。

select '{1,2,3}'::int[] @> (ARRAY[]::int[] || value_variable::int)

しかし、もっと簡単な方法があるはずだと思い続けていますが、それがわかりません。これはより良いようです:

select '{1,2,3}'::int[] @> ARRAY[value_variable::int]

これで十分だと思います。でも、他にやり方があればぜひ教えてください!

ベストアンサー1

構造がシンプルになりますANY:

SELECT value_variable = ANY ('{1,2,3}'::int[])

ANY(括弧内)の右辺のオペランドは、セット(例えばサブクエリの結果)または配列使い方はいくつかあります:

重要な違い:配列演算子 ( <@、、@>など&&)オペランドとして配列型を想定し、GINまたはGiSTインデックスをサポート一方、PostgreSQL の標準ディストリビューションでは、このANY構造は要素型を左オペランドとして想定しており、プレーンな B ツリー インデックスでサポートできます (演算子の左側にインデックス式があり、例のようにその逆ではありません)。例:

これらはいずれもNULL要素には機能しません。テストするにはNULL:

おすすめ記事