【问题标题】:How do I do a LIKE % query in ActiveRecord?如何在 ActiveRecord 中进行 LIKE % 查询?
【发布时间】:2011-07-28 04:40:05
【问题描述】:

我正在尝试查找一些包含特定字符串的项目。如果我这样做:

MyModel.where("description LIKE ?",keyword)

它将生成一个完全匹配的查询。我想让它生成一个LIKE %keyword% 查询。我该怎么做?

【问题讨论】:

    标签: ruby activerecord


    【解决方案1】:
    like_keyword = "%#{keyword}%"    
    MyModel.where("description LIKE ?", like_keyword)
    

    【讨论】:

    • 它不工作。生成的查询如下结束:LIKE '%'keyword'%' 并引发异常。
    • 谢谢。我也在使用LIKE 运算符进行搜索,但被难住了。我也在提前定义我的like keyword,然后做:collection = Model.where("attribute like ?", "% #{keyword} %")
    【解决方案2】:
    MyModel.where("description LIKE (?)", "%#{keyword}%")
    

    【讨论】:

      【解决方案3】:
      Model.where("name LIKE 'SH%'")
      

      它将获取所有仅以 SH 开头的名称。它将 100% 工作。 例如。 SH123,SH2343

      【讨论】:

      • 将这个从 -1 区域中拯救出来。如果name参数不是用户提交的,这是个不错的办法。
      【解决方案4】:

      您可以为此使用 ILIKE

      MyModel.where("description ILIKE (?)", "%#{keyword}%")
      

      【讨论】:

        猜你喜欢
        • 2011-05-24
        • 1970-01-01
        • 2013-12-26
        • 2012-08-11
        • 1970-01-01
        • 2021-05-13
        • 1970-01-01
        相关资源
        最近更新 更多