使用 % 和 LIKE 在 Rails 中进行 SQL 查询

标签 sql ruby-on-rails ruby

我正在尝试在我的 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)

您需要有一个名为 TestActiveRecord 模型,该模型被配置为使用名为 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/

相关文章:

ruby-on-rails - Ruby on Rails omniauth-facebook 在开发中工作,但在 Heroku 上生产失败

ruby - Rails 3 渲染/部分

ruby-on-rails - Spring 停止 Rails 控制台运行

ruby - Ruby 有像栈、队列、链表、映射或集合这样的容器吗?

MySQL 连接两个表

sql - 对列值的更改 date_trunc 进行不同搜索

ruby-on-rails - rails 3 : Cloning already-validated object prevents clone being invalidated -- is this strange or normal?

c# - Dapper .net 多次查询 'The reader has been disposed' 错误

MySQL通过关系表在第三张表中搜索

ruby-on-rails - Rails - 构建一个使用 <WBR> 打破长单词/URL 的助手