Rails PostgreSQL без учета регистра поиск с LIKE

У меня есть это в мой контроллер:

Konkurrencer.where("title LIKE ?", "%#{params[:q]}%").limit(4)

Я думаю, что этот запрос чувствителен к регистру. Он не должен учитывать регистр.

2 ответов


можно использовать ILIKE В, где вместо:

Konkurrencer.where("title ILIKE ?", "%#{params[:q]}%").limit(4)

от doc:

ключевое слово ILIKE можно использовать вместо LIKE, чтобы сделать матч регистр в соответствии с действующими язык. Это не в SQL standard, но является расширением PostgreSQL.


для использования без учета регистра в поиске с PostgreSQL, используя LOWER...

пример:

def self.search(client, date_start, date_end)
       joins(:customer).where("LOWER(customers.name) LIKE ? AND date >= ? AND date <= ?", "%#{client}%", date_start, date_end)
end