我正在编写一个 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/