2014-01-13 2 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, нет никакого способа сделать это на сервере db. Обычно вы делаете это на клиенте. Вам действительно нужно, чтобы вы могли выбирать соответствующие адреса, как это? См. Также 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 Enterprise, вам следует рассмотреть возможность использования функциональности Fuzzy Grouping для SSIS: http://www.bimonkey.com/2009/11/the-fuzzy-grouping-transformation/ – Dan

+1

@tenfour Это действительно очень удобно такого рода вещи на сервере БД, когда вы строите на них индексы выражений или используете их в материализованных представлениях и т. д. –

ответ

1

Вот некоторые реализации струна дистанционных функций в TSQL, которые могут помочь:

Levenshtein

Jaro-Winkler (Регистрация повторно quired)

SoundEx

MatchText

У меня было много удачи с Яро-Винклер, но, конечно, это связано с характером моих данных. Тот, который ближе всего похож на запрос подобия, который вы задали, является MatchText.

Смежные вопросы