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

时间:2016-09-15 05:42:17

标签: ruby-on-rails ruby postgresql activerecord

我在Ruby On Rails中使用LIKE子句。当我尝试通过键入&#34;更多&#34; 来搜索记录时,它不会返回任何内容,但是当我使用&#34;更多&#34; <时/ strong>,然后它返回包含更多关键字的记录,因此它似乎以区分大小写的方式运行。

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

以下是我目前使用的查询:

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

2 个答案:

答案 0 :(得分:14)

我认为你正在使用Postgres。

您可以使用ILIKE

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

或者是一些棘手的黑客lower()

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

答案 1 :(得分:0)

尝试这样的事情

def query_job(query)
  job_query = "%#{query.downcase}%"
  Job.where("lower(title) LIKE ? or lower(duration) LIKE ?", job_query, job_query) 
end 

query_job(params[:search])