尝试在4个不同的位置执行搜索查询,但是当我使用多个OR子句运行查询时,会出现此错误。
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语句太多,无法处理db?
cast
是关键字/保留字(用于转换类型的函数的名称)。使用转义符:
WHERE title LIKE '%Iron%' OR
rating LIKE '%Iron%' OR
"cast" LIKE '%Iron%'
或者,更好的是,重命名该列。
保留字的列表是here。