Rails如何搜索数据库中字符串的第一部分和第二部分?

时间:2015-10-24 09:35:28

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

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

我想要回归'第二壁垒,华尔街'而不是'Notwallstreet'的街道名称,其中'Wall'位于中间位置。

我使用过'gem ransack',但我只找到了包含的选项。而且还将返回'Notwallstreet'

2 个答案:

答案 0 :(得分:1)

如果你正在使用postgres,你可以按照here所述使用SIMILAR TO。

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

答案 1 :(得分:1)

您需要在单词的两边放置%以搜索前缀/中缀/后缀

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

PS:

只要你不需要中缀:

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

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