【问题标题】:Rails how do I search in the first and second part of a string in the database? [duplicate]Rails 如何在数据库中搜索字符串的第一部分和第二部分? [复制]
【发布时间】:2015-10-24 09:35:27
【问题描述】:

对于我的应用程序,我想构建一个返回街道名称的搜索表单。但是当我使用 where('street like ?', 'wall') 它只返回:'Wallstreet' 而不是例如:'Second Wallstreet, The Wallstreet'

我还想返回“第二华尔街,华尔街”,但不返回带有“Notwallstreet”的街道名称,其中“Wall”位于中间位置。

我使用了“gem ransack”,但在那里我只找到了包含的选项。这也将返回“Notwallstreet”

【问题讨论】:

    标签: ruby ruby-on-rails-4 ransack


    【解决方案1】:

    你需要在你的单词两边加上%来搜索前缀/中缀/后缀

    where('street like ?', '%wall%')
    

    PS:

    只要你不需要中缀:

    where('street like ? or ?', '%wall', 'wall%')
    

    这是你应该小心的事情。如果您在 street 字段上有索引,则后缀匹配将不会使用它(并且前缀会)

    【讨论】:

    • 谢谢您的回答。
    • @BartHoekstra 哦,我知道你不需要中缀匹配。我已经编辑了一个答案
    【解决方案2】:

    如果您使用的是 postgres,则可以使用 SIMILAR TO,如 here 所述。

    where('street similar to ?', '[[:<:]]Wall')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-15
      • 2022-01-16
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多