我在我的Rails应用程序中使用MySql2。我正在尝试创建一个activerecord查询,返回所有包含指定字符串的字段的记录。我已经阅读了我的输入内容,然后使用lower(column_name) LIKE 'string'
应该可以解决问题,但是这似乎不起作用。我的查询完全如下:
search = params[:search].to_s.downcase
@current_user.patients.where("lower(last_name) LIKE ? OR lower(first_name) LIKE ? OR lower(identifier) LIKE ?", "%#{search}%", "%#{search}%", "%#{search}%")
假设我有一个姓氏为“Abbott”的记录。当我的搜索参数是“Abb”或“bot”时,将返回此记录。但是,当搜索参数是“abb”或“Bot”时,不返回任何内容。看来查询仍然区分大小写?
我看了一遍,似乎无法找到答案。我已多次阅读lower(column_name)
应该有效,但事实并非如此。
感谢任何帮助。谢谢!
答案 0 :(得分:0)
我明白了。确实是因为字段存储为二进制值(感谢Vincent)。通过将二进制字段转换为CHAR,我能够对它们进行不区分大小写的比较:
@current_user.patients.where("CAST(last_name AS CHAR) LIKE ? OR ...