从PG中的数组字段中查找记录

时间:2014-05-24 08:40:37

标签: ruby-on-rails ruby-on-rails-3 postgresql

TableName:NameYear

这是我的表

ID name min_max_year
1  xyz  [1970,1971...2014]
2  abc  [1980,1981...2014]
2  pqr  [2000,2001...2014]

现在我想找到MinMaxYear包含1980年的记录。

我该怎么办?

我试试这种方式:NameYear.where(“min_max_year IN(?)”,1980)

但收到此错误:

ActiveRecord::StatementInvalid: PG::Error: ERROR:  operator does not exist: text = integer
LINE 1: ...ROM "name_year"  WHERE (min_max_year IN (1980))

1 个答案:

答案 0 :(得分:1)

您需要在数组列上使用ANY子句:

SELECT * FROM NameYear
WHERE 1980 = ANY(min_max_year);

ActiveRecord语句将是:

NameYear.where("? = ANY(min_max_year)", 1980)

这将选择min_max_year列包含值为1980的任何记录。