我試圖做一個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