我需要使用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
,我只会得到一个
我如何制定查询以获取两条记录?
答案 0 :(得分:1)
您可以使用正则表达式执行不区分大小写的过滤器:
SELECT "properties".* FROM "properties" WHERE (street_address ~* '123|happy|st')
为此,您需要分割params[:address]
并使用管道“ |”将它们加入:
Property.where("street_address ~* ?", "123 happy st".split.join('|'))
请注意,这与两个示例都匹配,但是作为正则表达式,它可以与其他任何内容匹配。