首页 > 解决方案 > 使用 SQL 查询搜索相似地址

问题描述

我需要使用 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,我只会得到一个

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

标签: sqlruby-on-railspostgresql

解决方案


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

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

为此,您需要params[:address]使用管道“|”拆分并连接它们:

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

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


推荐阅读