我正在尝试执行以下活动记录查询,但不断收到语法错误。
@kid.toys.where("name ILIKE ? OR description ILIKE ?", params[:query], params[:query])
我试图找到所有玩具name
就像params[:query]
或description
就像params[:query]
我得到的语法错误如下:
{"error":"Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ILIKE '\\\"robot\\\"' OR `description` ILIKE '\\\"robot\\\"')' at line 1: SELECT `items`.* FROM `items` WHERE `items`.`kid_id` = 2 AND (`name` ILIKE '\\\"robot\\\"' OR `description` ILIKE '\\\"robot\\\"')"}
非常感谢任何帮助或指导。我会继续寻找答案。
答案 0 :(得分:4)
ILIKE
不是MySQL中的运算符。您只是想使用LIKE
吗?
@kid.toys.where("name LIKE ? OR description LIKE ?", params[:query], params[:query])
如果您希望强制模式匹配不区分大小写,则可以通过向每个COLLATE
操作的任一操作数添加LIKE
子句来显式使用case-insensitive collation。例如:
@kid.toys.where("name LIKE ? COLLATE utf8_general_ci OR description LIKE ? COLLATE utf8_general_ci", params[:query], params[:query])