Sql server 在MS SQL中拆分地址行

Sql server 在MS SQL中拆分地址行,sql-server,tsql,split,Sql Server,Tsql,Split,我有这样一个设置:一个输出表,其中我的结果将包括 [FirstName] [LastName] [Address1] [Address2] [Address3] [ZipCode] [City] [Country] 原始数据主要由换行拆分地址行组成,有些用逗号拆分,还有一个名称字段 我的原始数据表如下所示: [NAME ] [ADDRESS] 如何使用T-SQL将这些转换为另一个 谢谢你抽出时间 Matt您真正的问题是,如何将[ADDRESS]的内容解析为单独的属性?我会暂时忘记TSQL,研

我有这样一个设置:一个输出表,其中我的结果将包括

[FirstName]
[LastName]
[Address1]
[Address2]
[Address3]
[ZipCode]
[City]
[Country]
原始数据主要由换行拆分地址行组成,有些用逗号拆分,还有一个名称字段

我的原始数据表如下所示:

[NAME ]
[ADDRESS]
如何使用T-SQL将这些转换为另一个

谢谢你抽出时间


Matt

您真正的问题是,如何将[ADDRESS]的内容解析为单独的属性?我会暂时忘记TSQL,研究源数据的质量,看看在理论上解析有多容易(或不容易)。然后找到一个切实可行的解决方案。一些随机评论:

  • 地址数据是出了名的“脏”数据,解析它通常很困难,尤其是国际数据
  • TSQL通常不是一种用于文本操作的好语言;如果您最终决定自己解析数据,那么几乎可以肯定您应该使用数据库之外的另一种语言(C#、Perl、Python等等)来解析数据
  • 即使您已经有了非常干净的数据,TSQL中也没有SPLIT()函数。编写一个字符串很容易,但是使用首选语言编写String.Split()或等效的字符串可能会更快、更容易。因此,即使您拥有干净的数据,也可以考虑外部程序或可能的.NET存储过程。
  • 如果你有大量的数据,寻找那些可以为你解析和验证地址数据的公司;通常,他们提供批量解决方案和按需web服务。你可能认为这很昂贵,但他们可以做一些你可能做不到的事情(例如,根据不同国家的邮政数据库模糊匹配地址),与你现在的时间成本加上未来的维护成本相比,你可能会发现这实际上更便宜
  • 如果您必须自己解析数据,请确保开发了一组广泛的单元测试

    • 您真正的问题是,如何将[ADDRESS]的内容解析为单独的属性?我会暂时忘记TSQL,研究源数据的质量,看看在理论上解析有多容易(或不容易)。然后找到一个切实可行的解决方案。一些随机评论:

      • 地址数据是出了名的“脏”数据,解析它通常很困难,尤其是国际数据
      • TSQL通常不是一种用于文本操作的好语言;如果您最终决定自己解析数据,那么几乎可以肯定您应该使用数据库之外的另一种语言(C#、Perl、Python等等)来解析数据
      • 即使您已经有了非常干净的数据,TSQL中也没有SPLIT()函数。编写一个字符串很容易,但是使用首选语言编写String.Split()或等效的字符串可能会更快、更容易。因此,即使您拥有干净的数据,也可以考虑外部程序或可能的.NET存储过程。
      • 如果你有大量的数据,寻找那些可以为你解析和验证地址数据的公司;通常,他们提供批量解决方案和按需web服务。你可能认为这很昂贵,但他们可以做一些你可能做不到的事情(例如,根据不同国家的邮政数据库模糊匹配地址),与你现在的时间成本加上未来的维护成本相比,你可能会发现这实际上更便宜
      • 如果您必须自己解析数据,请确保开发了一组广泛的单元测试

      请发布您目前编写的代码。人们通常不喜欢只为您编写代码。除非您的数据处于异常一致的模式中,否则我怀疑您是否能够自动准确地完成此操作—至少在没有第三方地址解析库的情况下。例如,您是否保证所有地址的zipcode始终在同一行?请发布您迄今为止编写的代码。人们通常不喜欢只为您编写代码。除非您的数据处于异常一致的模式中,否则我怀疑您是否能够自动准确地完成此操作—至少在没有第三方地址解析库的情况下。例如,您是否保证所有地址的zipcode始终在同一行上?