我刚从sqlite3切换到postgresql-9.4。之前,当我使用我的方法" typeahead"进行搜索时,我会得到不区分大小写的结果。但是现在我切换了,这个方法突然区分大小写。如何使用postgresql使方法不区分大小写?
def typeahead
q = params[:query]
render json: Subject.where('name like ? OR second_name like ? OR keywords like ?', "%#{q}%", "%#{q}%", "%#{q}%")
end
答案 0 :(得分:6)
我认为您可以使用ILIKE而不是LIKE
Subject.where('name ilike ? OR second_name ilike ? OR keywords ilike ?', "%#{q}%", "%#{q}%", "%#{q}%")
或简化一点
Subject.where('name ilike :name OR second_name ilike :name OR keywords ilike :name', name: "%#{q}%")
答案 1 :(得分:4)
您也可以使用" ilike"关键字代替"喜欢"。
答案 2 :(得分:2)
常见的方法是这样做:
Subject.where('LOWER(name) like ?, "%#{q.downcase}%")
请注意,如果遇到性能问题,可能需要创建小写索引。请参阅:How do I create an index in PostgreSQL based on lowercase only?