SQL-запрос для содержимого поля, содержащего целые слова, начинающиеся с PHRASE - PullRequest
2 голосов
/ 19 мая 2011

Я пытаюсь написать запрос SQL для извлечения строк, поля которых содержат несколько ключевых слов.Для запроса используется выборка результатов для функции автозаполнения, реализованной с помощью jQuery.

Прямо сейчас, автозаполнение работает, но мои результаты будут включать каждую строку, содержимое которой в определенном поле содержит запрос.Например, если я введу фразу «ar», мои результаты будут включать машину, гитару, кору и т. Д.

Я хотел бы вернуть только результаты, начинающиеся с фразы, поскольку пользователи, скорее всего, не будутпечатать случайными фрагментами середины слова.Я могу выбрать все строки, где первое слово начинается с запроса 1006 *, используя Model.where((:name =~ "#{params[:q]}%") [Я использую камень meta_where].

Однако я хотел бы также вернуть строки, в которых второе слово в поле начинается со строки запроса, даже если первое слово - нет.

Например, для строк "черная собака "и" собачья еда ", строка запроса 'do' должна возвращать обе строки, в то время как строка запроса 'do' не должна возвращать 'undone'.

Как мне написать SQL-запрос длятакой поиск?

1 Ответ

2 голосов
/ 19 мая 2011
Model.where( (:name =~ "#{params[:q]}%") | (:name =~ "% #{params[:q]}%") )

Эта конструкция работает с meta_where только плагин

...