sql-server - SQL地址数据乱七八糟,如何在查询中清理?

标签 sql-server tsql sql-server-2000

我的地址数据存储在 sql server 2000 数据库中,我需要提取给定客户代码的所有地址。问题是,有很多地址拼写错误,有些地址缺失,等等。所以我需要以某种方式清理它。我需要剔除错误的拼写、缺失的部分等,并得出“平均”记录。例如,如果 New York 在 5 条记录中有 4 条拼写正确,则应该是返回的值。

我无法修改数据,在输入时验证它,或者类似的事情。我只能修改数据的副本,或者通过查询对其进行操作。

我在这里得到了部分答案 Addresses stored in SQL server have many small variations(errors) ,但我需要允许每个代码有多个有效地址。

样本数据

代码名称 地址1 地址2 城市 州 邮政编码 使用时间
10003 AMERICAN NUTRITON INC 2183 BALL STREET OLDEN Utah 87401 177
10003 美国营养公司 2183 BALL STREET PO BOX 1504 OLDEN Utah 87402 76
10003 美国营养公司 2183 BALL STREET OLDEN Utah 87402 24
10003 美国营养公司 2183 BALL STREET PO BOX 1504 OLDEN Utah 87402 17
10003 Samantha Brooks 506 S. Main Street Ellensburg Washington 98296 1
10003 BEMIS 公司 1401 W. 第四平原大道。温哥华 华盛顿 98660 1
10003 CEI 597 VANDYRE BOULEVARD WRIGHTSTOWN 威斯康星州 54180 1
10003 Pacific Pet 28th Avenue OLDEN 犹他州 84401 1
10003 PETSMART, INC. 16091 NORTH 25TH STREET PHOENA Arizona 85027 1
10003 THE PET FIRM 16418 NORTH 37TH STREET PHOENA Arizona 85503 1

期望输出

代码名称 地址1 地址2 城市 州 邮政编码
10003 美国营养公司 2183 BALL AVENUE 奥尔登犹他州 84401
10003 Samantha Brooks 506 S. Main Street Ellensburg Washington 98296
10003 BEMIS 公司 1401 W. 第四平原大道。温哥华 华盛顿 98660
10003 CEI 975 VANDYKE 路 WRIGHTSTON 威斯康星州 54180
10003 Pacific Pet 29th Street OGDEN 犹他州 84401
10003 PETSMART, INC. 16091 NORTH 25TH AVENUE PHOENA Arizona 85027
10003 宠物公司 16418 北 37 街凤凰城亚利桑那州 85503

最佳答案

最好的解决方案是使用 CASS 认证的地址标准化程序或服务来格式化和验证地址。除了具有此功能的工具的 USPS 之外,还有许多提供此功能的第三方程序或服务。地址解析比您想象的要复杂得多,因此尝试提出几个查询来执行它会充满危险。

Google's Geocoding是另一个值得一看的地方。显然谷歌要求您显示结果以使用他们的地理编码服务。这就需要使用专用地址解析器,如 USPS 或第三方程序。

关于sql-server - SQL地址数据乱七八糟,如何在查询中清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4951039/

相关文章:

mysql - 通过映射表选择值。

c# - 获取存储过程结果的 .NET 架构

sql - 如何在 SQL Server 中找到未索引的外键

SQL Server 2000 和 2005 中用户定义函数的性能

sql-server - SQL Server 与案例合并吗?

mysql - 列排序是否会影响 Microsoft SQL Server 2012 中的性能?

SQL Server - 将默认日期时间值分配给存储过程中的参数

python - 使用核心 SQLAlchemy 插入和更新

sql - 如何从映射表中不包含的两个表中选择值?

sql-server - 如何通过代码在 Sql Server 中设置默认数据库?