请考虑下表

id int lang_codes text[]
1 {eng,fre}
2 {eng}

我需要从表中 Select 与输入数组相交的所有行,但仅当lang_codes中的所有项都出现在输入数组中时,例如:

  • 如果输入数组包含[eng,fre,ger],则返回所有行
  • 而[eng,ger]不会返回第一条记录,因为它需要两个代码都出现在输入数组中.

我try 了&&操作数,但它返回所有行:

select * from my_table where lang_codes && ARRAY['eng','ger'];

另一方面,@>操作数仅在数组完全匹配时返回

推荐答案

<@ operator应该可以做到这一点:

select * from my_table where lang_codes <@ ARRAY['eng','ger'];

SQL Fiddle

Postgresql相关问答推荐

如何确定要与给定转储文件一起使用的pg_Restore版本?

即使不对订阅服务器进行任何修改,Postgres逻辑复制也可能发生冲突吗?

将具有自定义类型的表从一种模式复制到另一种模式

AWS RDS Postgres 性能缓慢的数据传输

如何在不同的行中显示两列,避免重复并省略空条目

Postgres 转储按顺序插入

Heroku Rails 4 无法连接到服务器:connection refused

PostgreSQL 返回准确或最接近查询日期的日期

在 Postgresql 中获取星期几

statement_date列是日期类型,但表达式是整数类型

从 Postgres 数据库中删除所有函数

如何在可选参数上查询 postgres?

从局域网访问 PostgreSQL 服务器

如何使用字符串作为 PostgreSQL 咨询锁的键?

错误:must be owner of language plpgsql

与 Oracle 的 CONNECT BY ... START WITH 等效的 PostgreSQL 语法是什么?

将属性添加到 Sequelize FindOne 返回的对象

如何将表的一列复制到PostgreSQL中比较相同ID的另一表的列

Array Push的 Postgres 数组追加和数组长度

如何在 psql 中设置默认显示模式