2014-01-13 79 views
3

SQL Server是否具有與Postgres等效的功能類似於比較字符串?SQL Server與postgres類似的功能

我尋找的東西,將匹配

str1 = "Flat 1, 110 Bob Street" 
str2 = "110, Bob St. Flat 1" 

所以我可以做

select 
... 
from 
t1 join 
t2 on (similar(t1.str1,t2.str2) >= 0.9) 
+1

AFAIK,在數據庫服務器中沒有辦法做到這一點。通常你在客戶端上做這種事情。你真的有必要選擇這樣的匹配地址嗎?另見http://stackoverflow.com/questions/2097323/what-are-ways-to-match-street-addresses-in-sql-server和http://stackoverflow.com/questions/6003591/mysql-street- address-fuzzy-search – tenfour

+0

您正在使用哪種版本的SQL Server?如果你有SQL Server企業版,你應該考慮使用SSIS的模糊分組功能:http://www.bimonkey.com/2009/11/the-fuzzy-grouping-transformation/ – Dan

+1

@tenfour它只能真正得到方便在數據庫服務器中創建表達式索引時,或在物化視圖中使用它們時,這種類型的事情。 –

回答

1

這裏是在TSQL串距離函數的一些實現,可以幫助:

Levenshtein

Jaro-Winkler(Registration re quired)

SoundEx

MatchText

我已經有很多運氣哈羅 - 溫克勒的,但當然這是由於我的數據的性質。最接近你詢問的相似性查詢的一個是MatchText。