Ruby on rails ActiveRecord";下(列名称)“;仍然区分大小写。(MySql2,Rails)

Ruby on rails ActiveRecord";下(列名称)“;仍然区分大小写。(MySql2,Rails),ruby-on-rails,ruby,activerecord,mysql2,Ruby On Rails,Ruby,Activerecord,Mysql2,我正在Rails应用程序中使用MySql2。我正在尝试创建一个activerecord查询,该查询返回具有包含字符串的指定字段的所有记录。我已经读到,将我的输入向下转换,然后使用lower(列名)如“string”应该可以做到这一点,但是这似乎不起作用。我的问题如下: search = params[:search].to_s.downcase @current_user.patients.where("lower(last_name) LIKE ? OR lower(first_name)

我正在Rails应用程序中使用MySql2。我正在尝试创建一个activerecord查询,该查询返回具有包含字符串的指定字段的所有记录。我已经读到,将我的输入向下转换,然后使用
lower(列名)如“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\u name)
应该可以工作,但实际上不行


感谢您的帮助。谢谢

我明白了。这确实是因为字段存储为二进制值(感谢Vincent)。通过将二进制字段强制转换为字符,我能够对它们进行不区分大小写的比较:


@current\u user.patients.where(“CAST(姓氏为CHAR))LIKE?或…

您也可以包括表的描述(即
描述患者
)?您有它生成的SQL日志吗?@VincentB.表架构如下所示:Patient(id:integer,创建时间:datetime,更新时间:datetime,标识符:binary,名字:binary,姓氏:binary,dob:binary,创建者id:integer,chrono\u id:integer,最近一次录制时间:datetime)。现在我看了看,这可能是因为它们是二进制的吗?