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

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

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

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

最佳答案

使用 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);

关于ruby-on-rails - 检查 Postgres 数组中是否存在任何给定的值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288639/

相关文章:

ruby-on-rails - Rails 在连接表中创建多条记录

ruby-on-rails - 每 3 项新行

sql - Postgres Spring Data JPA 将列表作为值传递

javascript - 拼接数组中的嵌套对象

postgresql - 在 for 循环中循环 - Plpgsql

database - 自动分片postgresql?

javascript - 如何在 rails 和 webpack 的特定 View 中执行特定的 javascript 文件?

ruby-on-rails - 通过关系对具有完全相同 has_many 的模型进行分组

iphone - iOS,如何使用 subarraywithRange 从数组中获取子数组

arrays - 如何从 Matlab 中的结构数组中删除包含 NaN 的条目?