【问题标题】:How to search for exact match如何搜索完全匹配
【发布时间】:2016-10-15 18:00:25
【问题描述】:

我正在使用 Rails 4、MySQL 数据库和 jQuery Datatables 1.10。我有一个有效的搜索功能,但返回的结果比我想要的要多。

例如,当我搜索“Phase I”时,它会返回包含“Phase I”、“Phase II”或“Phase III”字段的结果,因为“Phase II”和“Phase III”都包含“Phase一世”。

这是查询:

table = table.where("col_name like :search", search: "%#{query}%")

如何更改此搜索以仅返回“Phase I”而不返回“Phase II”或“Phase III”?

【问题讨论】:

  • 为什么要搜索列与某些字符串匹配的表?你不知道哪些桌子有它们吗?这似乎是XY Problem
  • 尝试只使用查询而不是“%#{query}%”

标签: jquery mysql ruby-on-rails ruby


【解决方案1】:

您的查询将是

Table.where(col_name: query)

这应该给你一个完全匹配

【讨论】:

  • 对不起,这不起作用,我收到以下错误:syntax error, unexpected ':', expecting ')'
  • 很抱歉,如果上述解决方案对您有用,那么我的解决方案也可以正常工作,并且引发的错误与我的解决方案无关。为了防止使用您的方法进行sql注入,我建议您进行参数绑定,例如table = table.where("col_name = ?", query)
【解决方案2】:

这个解决方案对我有用:

table = table.where("col_name = '#{query}'")

【讨论】:

    猜你喜欢
    • 2019-09-22
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多