选择postgresql中数组相交的所有行

时间:2013-01-29 16:25:32

标签: postgresql rails-postgresql

目前我正在尝试在rails 3应用程序中选择两个数组有一些重叠的所有对象。

我尝试了以下内容:

Contact.where("possible_unique_keys && ?" c.possible_unique_keys)

给出了:

array value must start with "{" or dimension information

所以我尝试将后一条记录转换为postgresql数组,如下所示:

Contact.where("possible_unique_keys && string_to_array(?)", c.possible_unique_keys)

给出了:

operator does not exist: character varying[] && text[]

如何将两个数组都格式化为能够正确评估&&?

的格式

1 个答案:

答案 0 :(得分:1)

我想我现在已经解决了这个问题,想出了一种从Ruby数组构建查询到postgresql数组的方法(部分归功于这段代码written for rails/postgresql interoperability。) p>

给出一个字符串列表[" bill"," joe"," stu"," katie"," laura& #34;],我们必须做一些杂技方式才能让postgresql识别它们。这是构建请求的解决方案。

request = "SELECT * from  Contacts where possible_unique_keys && \'{"
list.each do |key|
    key.gsub("'", "\\'")
    if key == c.possible_unique_keys.last
        request << "\"#{key}\"}\'"
    else
        request << "\"#{key}\", "
    end
 end
 dupes = Contacts.find_by_sql(request)