如何使LIKE子句不区分大小写?

Amr*_*ngh 7 ruby postgresql activerecord ruby-on-rails

我在Ruby On Rails中使用LIKE子句.当我尝试通过键入"更多"来搜索记录时,它不会返回任何内容,但是当我使用"更多"时,它会返回包含更多关键字的记录,因此它看起来像是以区分大小写的方式运行.

是否可以使这种不区分大小写?

这是我目前使用的查询:

Job.where('title LIKE ? OR duration LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%")
Run Code Online (Sandbox Code Playgroud)

Зел*_*ный 16

我假设你正在使用Postgres.

您可以使用 ILIKE

Job.where('title ILIKE ? OR duration ILIKE ?', "%#{params[:search]}%", "%#{params[:search]}%")
Run Code Online (Sandbox Code Playgroud)

或者一些棘手的黑客攻击lower():

Job.where('lower(title) LIKE lower(?) OR lower(duration) LIKE lower(?)', "%#{params[:search]}%", "%#{params[:search]}%")
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用命名占位符来更优雅地编写此代码。`Job.where('title ILIKE :s OR duration ILIKE :s', s: "%#{params[:search]}%")` (2认同)