使用T-SQL解析地址

时间:2010-07-01 14:46:29

标签: tsql

我试图弄清楚如何使用T-SQL解析地址,而且我很擅长T-SQL。我的挑战是这个,

我有一个名为Locations的表,定义如下:

- City [varchar(100)]
- State [char(2)]
- PostalCode [char(5)]

我的用户界面有一个文本框,用户可以在其中输入地址。这个地址可能是基本上任何形式的(哎呀,我知道)。不幸的是,我也无法更改此UI。无论如何,文本框的值被传递到负责解析地址的存储过程中。我需要从该人输入的内容中获取并从与其输入关联的Locations表中获取PostalCode。对于我的生活,我无法弄清楚如何做到这一点。案件很多。例如,用户可以输入以下内容之一:

  • 伊利诺伊州芝加哥
  • 芝加哥,IL 60601
  • 芝加哥,IL,60601
  • Chicago,IL 60601 USA
  • 芝加哥,IL,60601 USA
  • Chicago IL 60601 USA
  • 纽约NY 10001美国
  • 纽约,NY 10001,美国

你明白了。有很多案例。我也无法在网上找到任何解析器。我一定不能正确看待。有人可以指点我在线解析器或解释如何做到这一点?我愿意为解决这个问题付出代价,但我找不到任何东西,我很震惊。

1 个答案:

答案 0 :(得分:2)

也许CLR函数可能是比tsql更好的选择。查看http://msdn.microsoft.com/en-us/magazine/cc163473.aspx以获取使用正则表达式将一些非常复杂的字符串输入解析为表值结果的示例。现在,您可以通过正则表达式匹配获得创意,但以下正则表达式应该可以帮助您:

(.*?)([A-Z]{2}),? (\d+)( USA)?$

如果你不愿意使用CLR功能,也许你在调用系统中有正则表达式功能,比如ASP.Net或PHP。