Rails 如何在数据库中搜索字符串的第一部分和第二部分?
Rails how do I search in the first and second part of a string in the database?
对于我的应用程序,我想构建一个返回街道名称的搜索表单。但是当我使用 where('street like ?', 'wall')
它只有 returns: 'Wallstreet' 而不是例如: 'Second Wallstreet, The Wallstreet'
我还想 return 'Second Wallstreet, The Wallstreet' 但不想 'Notwallstreet' 的街道名称,其中 'Wall' 位于中间某处。
我用过'gem ransack',但我只发现选项包含。那也会 return 'Notwallstreet'
如果您使用的是 postgres,则可以按照 here 中所述使用 SIMILAR TO。
where('street similar to ?', '[[:<:]]Wall')
您需要在单词的两边加上 %
才能搜索 prefix/infix/postfix
where('street like ?', '%wall%')
PS:
只要你不需要中缀:
where('street like ? or ?', '%wall', 'wall%')
这是你应该小心的事情。如果您在 street
字段上有索引,后缀匹配将不会使用它(并且前缀会)
对于我的应用程序,我想构建一个返回街道名称的搜索表单。但是当我使用 where('street like ?', 'wall')
它只有 returns: 'Wallstreet' 而不是例如: 'Second Wallstreet, The Wallstreet'
我还想 return 'Second Wallstreet, The Wallstreet' 但不想 'Notwallstreet' 的街道名称,其中 'Wall' 位于中间某处。
我用过'gem ransack',但我只发现选项包含。那也会 return 'Notwallstreet'
如果您使用的是 postgres,则可以按照 here 中所述使用 SIMILAR TO。
where('street similar to ?', '[[:<:]]Wall')
您需要在单词的两边加上 %
才能搜索 prefix/infix/postfix
where('street like ?', '%wall%')
PS:
只要你不需要中缀:
where('street like ? or ?', '%wall', 'wall%')
这是你应该小心的事情。如果您在 street
字段上有索引,后缀匹配将不会使用它(并且前缀会)