ActiveRecord:查询属性但忽略特殊字符和大小写

时间:2017-07-13 14:36:35

标签: sql ruby-on-rails activerecord

我有一个Value模型,它具有name属性。 可以是什么名称的几个例子:

value_1-example
Value2/Exampl-e

我希望能够通过搜索已清理的字符串找到具有这些名称的值:

value1example =>返回名称为value_1-example

的值

value2example =>返回名称为Value2/Exampl-e

的值

基本上,它在不考虑/_-等特殊字符并使查询不区分大小写的情况下查询数据库。

有没有办法用ActiveRecord做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以使用replace

Model.where("replace(replace(LOWER(name), '_', ''), '-', '') like ?", '%value1example%')

唯一的问题是你必须为每个角色使用替换

如果您使用的是Postgres,则可以使用regex_replace