我正在尝试在我的 Rails 应用程序中执行 SQL 查询。以下正常执行,因为它正在寻找完全匹配:
connection.query("SELECT *
FROM test
WHERE y=#{connection.quote(name)}
ORDER BY x ASC")
我想使用 LIKE 运算符查找部分匹配项。在 SQL 中它看起来像:
SELECT * FROM test WHERE y LIKE '%John%' ORDER BY x ASC
如何在我的 Ruby 查询中执行此操作?我尝试在几个地方添加 %
但它不起作用。我收到错误消息说我的查询正在查找 %'John'%
而不是 '%John%'
connection.query("SELECT *
FROM test
WHERE y LIKE #{%connection.quote(name)%}
ORDER BY x ASC")
最佳答案
既然你使用 Rails,我建议使用 ActiveRecord's query interface而不是普通的 SQL。
使用 ActiveRecord
查询可以这样写:
Test.where("y LIKE ?", "%#{name}%").order(:x)
您需要有一个名为 Test
的 ActiveRecord
模型,该模型被配置为使用名为 test
的数据库表(Rails 默认命名为 tests
) 来完成这项工作:
# in app/models/test.rb
class Test < ActiveRecord::Base
self.table_name = 'test'
end
关于使用 % 和 LIKE 在 Rails 中进行 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31353115/