【问题标题】:Active Record Query 'where' to ignore spacesActive Record Query 'where' 忽略空格
【发布时间】:2016-07-13 15:04:57
【问题描述】:

如何从 db 中获取与给定字符串匹配且不包含空格的所有记录?

例如:

数据库记录:"Hello beautiful world!"

给定字符串:name = "Hello beau tifulworld !"

是否可以将其作为 Active Record 查询?

【问题讨论】:

  • 这不是一个真正的 ActiveRecord 问题,我不认为。您可能必须使用特定数据库提供的任何正则表达式支持在 SQL 中找到解决方案,然后将一行原始 sql 传递给 Active Record 查询。哦,不是我的反对票。

标签: ruby-on-rails activerecord


【解决方案1】:

您可以按名称搜索,不带空格。像这样的东西(对于 postgres):

Model.where("replace(name, ' ', '') = replace(?, ' ', '')", 'Hello  beau tifulworld !')

【讨论】:

  • 谢谢,其实我是这样处理的:name = "Hello beau tifulworld !" Model.where("replace(name, ' ', '') = replace(?, ' ', '')", "#{name}")
【解决方案2】:

我想到的是,您可以通过从两边排序的名称来搜索记录。 我的意思是,首先在一个新创建的数组中,使用记录名称和 ID 对记录名称进行排序,例如

record.name.chars.sort.join 并且您还对您的 matching_word = "Hello beautiful world!"

获取!Habdeefilllloortuuw"

然后您可以获取与此助手名称匹配的记录的 id。 在下一步中,您可以从数据库中获取这些记录。

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-12
    • 2013-10-11
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2013-02-27
    • 1970-01-01
    相关资源
    最近更新 更多