【发布时间】:2012-04-10 13:01:44
【问题描述】:
我在 Postgres 中有一个 SQL 查询,可以通过 SQL 控制台/工具正常工作,但不能通过 Rails 的 ActiveRecord (ActiveRecord::Base.connection.execute/select_all)。我尝试了很多东西,比如转义引号,调用 ActiveRecord::Base.quote/sanitize 无济于事 - ActiveRecord 返回一个空集,我已验证此查询返回了一个元组。
SELECT
... blah blah
FROM
... joins joins joins
inner join core.pat_assignments assignment on assignment.correspondent_alias_id = out_alias.id
inner join core.pats patent on patent.id = assignment.pat_id and (select regexp_matches(patent.us_class_current, '(\w+)\/')) = '{D02}'
where
in_alias.id in (1987, 5004)
有趣的是,如果我取出最后一个内部连接行,特别是正则表达式匹配,它会返回一些东西。所以有一些东西:
(select regexp_matches(patent.us_class_current, '(\w+)\/')) = '{D02}'
这让它呕吐,但我就是不知道为什么......任何建议将不胜感激!
【问题讨论】:
-
查看 development.log 文件;您将看到变体产生的实际 SQL。如果不清楚它们与那有何不同,请发布差异(真实的,没有“等等,等等”:-),有人可能会帮助“解释差异”。
标签: ruby-on-rails ruby-on-rails-3 postgresql activerecord