where()活动记录查询的语法错误

时间:2016-01-08 22:20:17

标签: mysql ruby-on-rails rails-activerecord

我正在尝试执行以下活动记录查询,但不断收到语法错误。

@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\\\"')"}

非常感谢任何帮助或指导。我会继续寻找答案。

1 个答案:

答案 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])