postgres具有数组数据类型,在本例中为数字数组:

CREATE TABLE sal_emp (name text, pay_by_quarter integer[]);
INSERT INTO sal_emp VALUES ('one', '{1,2,3}');
INSERT INTO sal_emp VALUES ('two', '{4,5,6}');
INSERT INTO sal_emp VALUES ('three', '{2,4,6}');
SELECT * FROM sal_emp;

Result:
one, {1,2,3}
two, {4,5,6}
three, {2,4,6}

据我所知,您只能按如下方式查询数组:

SELECT * FROM sal_emp WHERE 4=ANY(pay_by_quarter);
SELECT * FROM sal_emp WHERE ARRAY[4,5,6]=pay_by_quarter;

这意味着您可以 Select 一行,其中数组包含单个参数的匹配项,或者如果整个数组与数组参数匹配.

我需要 Select 一行,其中该行数组的任何成员都与参数数组的任何成员匹配——有点像"IN",但我不知道如何匹配.我try 过以下两种方法,但都不管用:

SELECT * from sal_emp WHERE ARRAY[4,5,6]=ANY(pay_by_quarter);
SELECT * from sal_emp WHERE ANY(pay_by_quarter) IN (4,5,6);

我想我可以把数组转换成字符串,但这听起来是个糟糕的解决方案..

有什么 idea 吗?

推荐答案

我想...有一个&&;操作人员

http://www.postgresql.org/docs/current/static/functions-array.html

"&重叠(有共同元素)数组[1,4,3]&数组[2,1]."

Postgresql相关问答推荐

横向联接返回的行数太多

PostgreSQL:函数结果表内冲突(...)上的";中的字段名称

supabase 中的交易

PostgreSQL 连接字符串的正则表达式

Postgres 低估了导致错误查询计划的行数

Postgresql:创建默认表空间的视图和使用?

Rails 迁移:PostgreSQL 上的 Bigint 似乎失败了?

Rails:安装 pg gem 时出错

OpenShift:如何从我的 PC 连接到 postgresql

如何在 PostgreSQL 中截断日期?

更详细地解释 JOIN 与 LEFT JOIN 和 WHERE 条件性能建议

在 PostgreSQL 中将时间转换为秒

如何让 Rails 使用 SSL 连接到 PostgreSQL?

LAG 函数和 GROUP BY

'active' 标志与否?

在 row_to_json 函数中 Select 查询

如何在 plpgsql 中使用记录类型变量?

在 PostgreSQL 中将列数据类型从 Text 更改为 Integer

在同一台机器上创建多个 Postgres 实例

PostgreSQL:如果不存在则创建表 AS