我试图做一个SQL Server数据库中的三字串(每个地址)和一列(“地址”)数组之间的地址匹配。例如,我在这个数组变量中有一个字符串123 main st
,并且从123 main st. #A1
的感兴趣列中有条目。以下是我希望我的查询或脚本执行的操作。SQL/PHP:比较地址
- 找到这个入口
123 main st. #A1
- 找到字符串
1123
,main
任何条目,并st
- 忽略为了
- 忽略大小写
什么是解决这个的高效,快捷的方式问题?我以下面的方式来做这件事。这是我如何做它现在:
SELECT *
FROM some_table
WHERE UPPER(address) LIKE UPPER('123%')
AND UPPER(address) LIKE UPPER('%main%')
AND UPPER(address) LIKE '%st%';`
你的字符串的三个部分需要按顺序排列,还是应该匹配'123 st main' ... –
我认为some_table可能非常大。有一件事可以帮助,就是将列地址编入索引。假设这是真的,下一步将是获得所有“像123”,然后搜索那些像%main%和%st%。 – Frank
@Frank,你推荐什么样的索引来搜索'LIKE'%foo%''?那些可以[有点棘手](http://use-the-index-luke.com/sql/where-clause/searching-for-ranges/like-performance-tuning)。 – pilcrow