如何将地址字段拆分为街道类型,街道名称,号码等?

时间:2013-09-29 15:16:11

标签: c# .net sql sql-server ssis

我在c#中开发一个Web应用程序。网络标准化街道地址。我现在需要做的是以下内容: 在数据库sql server 2005中,我有3个表:

1. - Street address that need split, which contains hundreds of addresses
like this:  | streetType stretName number other | all in a same
field.

 2. - All street names of the country, separated by city.

 3. - All street types, example: avenue, street, road, etc.

我需要得到的分工结果是:

street type | stret name | number | other

使用sql server,ssis或c#。我如何得到这个结果?

在sql server中: 表1(in)街道地址到标准化字段:

  • id(int aut)
  • 街道地址全部在字段中(varchar)

表2(out)在字段中分割的归一化地址

  • 街道类型(varchar)(例如:大道,道路,街道等)
  • 街道名称(varchar)
  • 街道号码
  • 其他

这是一个例子

这是excel中的一个例子。它由3张纸组成:

1. Table address to normalize: Addresses are stored in sql server 2005
I need to normalize. 
2. Table street name by city They are all street names in the country, separated by city. With this normalized direction.
3. - Table street types These are the types of existing street.

表格包含样本记录。 我只需要分割字段,因为我已经可以规范化了 这是一个有记录的例子 https://skydrive.live.com/redir.aspx?resid=182141CD87872379!1701 谢谢!

1 个答案:

答案 0 :(得分:0)

您有多种方法可以尝试解析地址:

  1. 自定义T-SQL命令:现在您可以使用代码执行此操作。在CASE语句中包含很多CHARINDEX,PATINDEX和SUBSTRING命令。缺点是您可能无法正确识别所有模式并可能引入错误。此外,如果您有全局地址,那么可能存在许多不同的地址模式,您可能会犯很多错误。

  2. SSIS的
  3. CozyRoc Address Parse:如果您只解析美国地址,那么这是一个很好的解决方案。好处是你不必编写解析代码。缺点是这需要花钱,而且仅适用于美国地址。我自己使用过这个产品,所以我可以说它适用于我的目的。

  4. 其他第三方地址解析器:除了CozyRoc之外,还有许多其他地址解析器。我没有使用它们中的任何一种,但我相信它们很多都是好的或更好的。