sql - 使用 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
,我只会得到一个
如何制定查询以获取两条记录?
解决方案
您可以使用正则表达式执行不区分大小写的过滤器:
SELECT "properties".* FROM "properties" WHERE (street_address ~* '123|happy|st')
为此,您需要params[:address]
使用管道“|”拆分并连接它们:
Property.where("street_address ~* ?", "123 happy st".split.join('|'))
请注意,这匹配两个示例,但作为正则表达式,它可以匹配其他任何内容。
推荐阅读
- pandas - Pandas 定位多个条件
- c# - 从 Microsoft Teams 机器人发送 HTML 附件
- vba - Word OLE 自动化 - 隐藏和内存抗性 Word 实例以加快文档加载
- python - 将 API 响应转换为 json
- docker - 用于访问我的 dockerized 烧瓶应用程序的 Nginx proxy_pass 规则
- javascript - 对对象数组做出反应 setState 抛出“TypeError:无法读取未定义的属性“toString”
- python - 如何在 subprocess.Popen.communicate 的输出中查找字符串
- regex - 如何使用正则表达式捕获特殊字符后的值?
- javascript - 在项目图例上单击更改饼图的行为
- php - 如何修复我的 php 会话,因为我的登录页面没有登录,但它确认了详细信息