检查Postgres数组中是否存在任何给定值的数组

时间:2013-11-29 15:08:14

标签: ruby-on-rails arrays postgresql ruby-on-rails-4

我正在编写一个Rails 4应用程序,并在我的一个名为identifiers的模型上有一个字符串数组列。当用户传入标识符列表时,获取任何给定标识符与任何存储标识符匹配的行的语法是什么?

我正在尝试where('ARRAY[?] == any(identifiers)', ids),但这似乎不起作用。

1 个答案:

答案 0 :(得分:4)

使用array operator "overlap": &&

SELECT * FROM tbl WHERE ARRAY[1,2,3] && identifiers

或者:

SELECT * FROM tbl WHERE '{1,2,3}'::int[] && identifiers

当然,您没有透露必须匹配的确切类型。我的例子是整数数组。

此表单可以使用标识符列上的GIN索引:

CREATE INDEX tbl_identifiers_gin_idx ON tbl USING GIN (identifiers);