2016-01-08 41 views
0

我試圖執行以下活動記錄查詢,但不斷收到語法錯誤。語法錯誤where()活動記錄查詢

@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

使用只是在這裏 – dsounded

回答

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]) 
+0

我會看看這個。沒有COLLATE它沒有做我想做的,也許這會使它工作 –

+0

我不期待一個空數組,但這就是返回:('COLLATE'沒有解決它... –