检查数组字段是否包含值

检查数组字段是否包含值

我肯定这是一个重复的问题,因为答案在某处,但是在谷歌搜索10分钟后我一直找不到答案,所以我呼吁编辑不要关闭它可能对其他人有用的基础。

我正在使用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

我想在pub_types中找到所有带有“Journal”的行。

我找到了文档并用谷歌搜索,这是我尝试过的:
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";

我已经扫描了the postgres array docs,但看不到如何运行查询的简单示例,并且StackOverflow问题似乎都基于更复杂的示例。

最佳答案

这应该工作:

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

即语法是<value> = ANY ( <array> )。还要注意,postresql中的字符串文字是用单引号引起来的。

关于postgresql - Postgres:检查数组字段是否包含值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39643454/

10-09 00:39