mam to w moim kontrolera:wyszukiwania wrażliwy Szyny PostgreSQL zakaz przypadku LIKE
Konkurrencer.where("title LIKE ?", "%#{params[:q]}%").limit(4)
myślę, że to zapytanie jest wielkość liter. Wielkość liter nie powinna być rozróżniana.
mam to w moim kontrolera:wyszukiwania wrażliwy Szyny PostgreSQL zakaz przypadku LIKE
Konkurrencer.where("title LIKE ?", "%#{params[:q]}%").limit(4)
myślę, że to zapytanie jest wielkość liter. Wielkość liter nie powinna być rozróżniana.
Można użyć ILIKE
w gdzie zamiast:
Konkurrencer.where("title ILIKE ?", "%#{params[:q]}%").limit(4)
Od Doc:
Kluczowym słowem ILIKE mogą być używane zamiast chcą, aby mecz wielkości liter zgodnie z aktywne ustawienia regionalne. Nie jest to w standardzie SQL , ale jest rozszerzeniem PostgreSQL.
Do korzystania z uwzględnieniem wielkości liter w poszukiwaniu z PostgreSQL za pomocą Dolny ...
Przykład:
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
Dobre rozwiązanie, ponieważ działa z PostgreSQL i Sqlite. Nie testowałem z MySQL. W moim przypadku musiałem skreślić wyszukiwany termin, dla inst. "% # {client.downcase}% –
właśnie znalazłeś http://www.postgresql.org/docs/8.0/static/ functions-matching.html –
Proszę nie używać podręczników z przestarzałych wersji. Zastąp "8.0" w linku swoim odpowiednim numerem wersji (lub użyj "current" zamiast) –
@a_horse_with_no_name Dzięki za wskazanie, że ... zrobione dla odpowiedzi – ScottJShea