我们有一个街道地址栏:
枫树路123号
第一大道321号
等等。
有没有办法将这些地址与给定的输入进行匹配?输入可能是街道地址,但格式可能不同。例如:
枫树路123号
第一大道321号
我们首先想到的是去除所有街道术语(rd、st、ave、blvd等)的输入。
显然,这并不总是可靠地匹配。还有其他方法可以尝试在SQL Server中匹配街道地址吗?
我们可以使用用户定义函数,存储过程和常规的旧t-sql。我们不能使用clr。
我们有一个街道地址栏:
枫树路123号
第一大道321号
等等。
有没有办法将这些地址与给定的输入进行匹配?输入可能是街道地址,但格式可能不同。例如:
枫树路123号
第一大道321号
我们首先想到的是去除所有街道术语(rd、st、ave、blvd等)的输入。
显然,这并不总是可靠地匹配。还有其他方法可以尝试在SQL Server中匹配街道地址吗?
我们可以使用用户定义函数,存储过程和常规的旧t-sql。我们不能使用clr。
9条答案
按热度按时间huwehgph1#
不要把那些可变的东西剥离出来,而是试着把它们转换成一种可以比较的“规范形式”。
例如,在进行比较之前,将“rd”或“rd.”替换为“road”,将“st”或“st.”替换为“street”。
wbgh16ku2#
您可能需要考虑使用Levenshtein Distance算法。
您可以在SQL Server中将其创建为用户定义函数,在该函数中,它将返回需要对String_A执行的操作数,以使其变为String_B。然后,您可以将Levenshtein Distance函数的结果与某个固定阈值或从字符串长度派生的某个值进行比较。
您只需按如下方式使用它:
正如Mark Byers所建议的,如果使用Levenshtein Distance,将变量项转换为规范形式会有所帮助。
使用全文搜索可能是另一种选择,特别是因为Levenshtein通常需要全表扫描。这一决定可能取决于您打算执行这些查询的频率。
您可能需要查看以下针对SQL Server的Levenshtein Distance实现:
注:您需要为上述实现实现一个MIN3函数。您可以使用以下函数:
您可能还对以下文章感兴趣:
eufgjt7s3#
为了进行正确的街道地址匹配,您需要将地址转换为标准格式。请查看USPS邮政标准here(我假设你正在处理美国的地址)。这绝不是一个简单的过程,如果你想能够处理所有类型的美国邮件地址。QAS和Satori Software等公司提供的软件可以为您进行标准化。您需要导出您的地址,运行他们通过软件,然后加载数据库与更新的地址。也有第三方供应商,将执行地址标准化以及。这可能是矫枉过正,你正在尝试做的,但它是最好的方式做到这一点。如果数据库中的地址是标准化的,那么您将有更好的机会匹配它们(特别是如果您也可以标准化输入)。
ui7jx7zq4#
我认为你的第一步是更好地定义你对不同地址的宽容程度。例如,哪些地址匹配,哪些地址不匹配:
在同一个地区有枫树街和枫树大道吗?橡树街对橡树大道怎么样?
例如,我住的地方有很多街道/道路/大道/大道都叫奥瓦索。我住在奥瓦索街,它连接到北奥瓦索大道,它连接到南奥瓦索大道。然而,只有一条维多利亚大道。
考虑到这一现实,你必须要么有一个数据库的所有道路名称,并寻找最近的道路(并处理号码分开)
或
提前决定你会坚持什么,不会坚持什么。
fruv7luv5#
地址匹配和重复数据删除是一件麻烦的事情。其他的海报说地址需要首先标准化到当地的邮政标准机构(例如如果是美国地址,美国邮政)是正确的。一旦地址是标准格式,剩下的就很容易了。
有几个第三方服务可以标记列表中的重复项。仅使用MySQL子查询无法解决地址格式和标准的差异。USPS(用于美国地址)有一定的指导原则来制定这些标准,但只有少数供应商获得认证可以执行此类操作。
所以,我建议你最好的解决办法是将表格导出为CSV文件,然后提交给一个强大的列表处理器。SmartyStreets的Bulk Address Validation Tool就是这样一个例子,它会在几秒钟到几分钟内自动完成。它会用一个名为"Duplicate"的新字段标记重复的行,并在其中输入Y值。
尝试标准化和验证几个地址here,以了解输出的外观。
完全披露:我为SmartyStreets工作
dwthyt8l6#
剥离数据是一个坏主意。许多城镇会有几十个相同街道的变体-橡树街,橡树路,橡树巷,橡树圈,橡树苑,橡树大道等...如上所述,转换为规范的美国邮政缩写是一个更好的方法。
rqqzpn5f7#
Fuzzy Lookups and Groupings Provide Powerful Data Cleansing Capabilities
cigdeys38#
你可以试试SOUNDEX,看看它是否能让你接近。http://msdn.microsoft.com/en-us/library/aa259235%28SQL.80%29.aspx
vi4fp9gy9#
您也可以 checkout COMPGED函数-https://www.sas.com/content/dam/SAS/support/en/sas-global-forum-proceedings/2018/2487-2018.pdf