Postgres: 配列フィールドに値が含まれているかどうかを確認しますか? 質問する

Postgres: 配列フィールドに値が含まれているかどうかを確認しますか? 質問する

これは、答えがどこかにあるという意味で重複した質問であることは確かですが、10 分間 Google 検索しても答えを見つけることができませんでした。そのため、他の人にとって役立つ可能性があるという理由で、編集者に質問を閉じないようお願いしたいと思います。

私は Postgres 9.5 を使用しています。これが私のテーブルです:

        Column          │           Type            │                                Modifiers
────────────────────────┼───────────────────────────┼─────────────────────────────────────────────────────────────────────────
 id                     │ integer                   │ not null default nextval('mytable_id_seq'::regclass)
 pmid                   │ character varying(200)    │
 pub_types              │ character varying(2000)[] │ not null

で「Journal」を含むすべての行を検索しますpub_types

ドキュメントを見つけてグーグルで検索し、次のことを試しました:

select * from mytable where ("Journal") IN pub_types;
select * from mytable where "Journal" IN pub_types;
select * from mytable where pub_types=ANY("Journal");
select * from mytable where pub_types IN ("Journal");
select * from mytable where where pub_types contains "Journal";

スキャンしましたpostgres配列ドキュメントしかし、クエリを実行する方法の簡単な例は見当たらず、StackOverflow の質問はすべて、より複雑な例に基づいているようです。

ベストアンサー1

これは動作するはずです:

select * from mytable where 'Journal'=ANY(pub_types);

つまり、構文は次のようになります<value> = ANY ( <array> )。また、postresql の文字列リテラルは一重引用符で囲んで記述されることに注意してください。

おすすめ記事