2014-01-13 52 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。