You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL:基于街道号/街道名对构建带模糊匹配的WHERE子句

多组地址对的模糊查询解决方案

你需要匹配指定街道号与对应模糊街道名的组合,原写法的逻辑错误在于让所有街道号和街道名条件自由组合,而非一一对应。正确写法是将每组地址对的条件用OR连接,每个分支内对应一组街道号和模糊街道名的匹配:

SELECT * 
FROM TABLE
WHERE 
  (STREET_NUMBER = '123' AND STREET_NAME LIKE '%MAIN%')
  OR (STREET_NUMBER = '231' AND STREET_NAME LIKE '%ELM%')
  OR (STREET_NUMBER = '5245' AND STREET_NAME LIKE '%BROAD%')
  OR (STREET_NUMBER = '73334' AND STREET_NAME LIKE '%THIRD%')

原写法失效原因

原写法STREET_NUMBER IN (...) AND STREET_NAME LIKE (...)的逻辑是:只要街道号在列表中且街道名匹配任意模糊条件就会被选中,这会导致错误匹配(比如街道号123搭配含ELM的街道名),不符合你需要的一一对应地址对的需求。

街道名变体处理

针对Road/Rd、Avenue/Ave这类不规范变体:

  • 直接用%关键词%的模糊匹配即可覆盖大部分情况,比如%MAIN%会匹配Main St、Main Rd、Main Avenue等
  • 若需更精准,可扩展单个分支的条件,比如STREET_NAME LIKE '%MAIN%' OR STREET_NAME LIKE '%MN%'

由于是临时查询,该写法无需考虑性能问题,完全满足需求。

内容的提问来源于stack exchange,提问作者KevinR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 08:00:17