SQLite3 :: SQLException: возле "LIKE": синтаксическая ошибка: вы можете использовать более одного ИЛИ в sqllite3? - PullRequest
0 голосов
/ 24 января 2020

Попытка выполнить поисковый запрос в 4 разных местах, но когда я запускаю запрос с более чем одним предложением ИЛИ, это выдает мне эту ошибку.

SQLite3::SQLException: near "LIKE": syntax error: SELECT COUNT(*) FROM "movies" WHERE (title LIKE '%Iron%' or rating LIKE '%Iron%' or cast LIKE '%Iron%')

Мой текущий запрос выглядит как это.

Movie.where('title LIKE ? or rating LIKE ? or cast LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%", "%#{params[:search]}%")

Если я ограничу его только единичным предложением OR, страница загружается нормально без ошибок, поэтому я предполагаю, что это просто слишком много операторов OR для БД справиться?

1 Ответ

1 голос
/ 24 января 2020

cast - ключевое слово / зарезервированное слово (имя функции для преобразования типов). Используйте экранирование:

WHERE title LIKE '%Iron%' OR
      rating LIKE '%Iron%' OR
      "cast" LIKE '%Iron%'

Или, что еще лучше, переименуйте столбец.

Список зарезервированных слов: здесь .

...