ActiveRecord "lower(column_name)" 仍然区分大小写。 (MySql2, Rails)

ActiveRecord "lower(column_name)" is still case sensitive. (MySql2, Rails)

我在 Rails 应用程序中使用 MySql2。我正在尝试进行一个 activerecord 查询,该查询 returns 所有具有包含字符串的指定字段的记录。我读过将我的输入缩小然后使用 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) 应该有效,但它没有。

感谢任何帮助。谢谢!

我明白了。这确实是因为这些字段被存储为二进制值(感谢文森特)。通过将二进制字段转换为 CHAR,我能够不区分大小写地比较它们:

@current_user.patients.where("CAST(last_name AS CHAR) LIKE ? OR ...