使用SQL查询搜索相似的地址

时间:2019-11-28 17:49:42

标签: sql ruby-on-rails postgresql

我需要使用SQL查询查找相似的地址。我正在使用Ruby on Rails。

这是我正在使用的查询:

properties.where('lower(street_address) LIKE ?', "%#{params[:address].downcase}%")

我有两个具有以下地址的属性:

123 Happy st 123 East Happy st

当我搜索params[:address](即123 happy st)时,我只会得到第一个值。

如果我做east happy st,我只会得到一个

我如何制定查询以获取两条记录?

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式执行不区分大小写的过滤器:

SELECT "properties".* FROM "properties" WHERE (street_address ~* '123|happy|st')

为此,您需要分割params[:address]并使用管道“ |”将它们加入:

Property.where("street_address ~* ?", "123 happy st".split.join('|'))

请注意,这与两个示例都匹配,但是作为正则表达式,它可以与其他任何内容匹配。