【问题标题】:Get Street Name and Apt number from Address从地址获取街道名称和 Apt 编号
【发布时间】:2013-04-15 22:29:12
【问题描述】:

感谢您查看我的帖子,我已经摸索了很长时间了,听起来很简单的要求结果却是一个艰巨的要求,下面是要求....

我需要分开(街道号码、街道名称、套房\公寓信息或找到的任何 zip)

地址如下:

  1. 主街 123 号
  2. 123 NW.17 街
  3. 华盛顿路一号,套房 405
  4. 1 Governement Dr #400,华盛顿,01211

到目前为止,我能够分离出 123 Main St,但每当我在字符串中进一步使用 Char\Pat 索引时,第 2 行上方的地址就会被打乱,例如变成 (123 NW St)

我的主要目标是断开 htis 字符串并将其放在 table 中然后连接.....

任何帮助将不胜感激。

【问题讨论】:

  • “到目前为止,我能够...”但是您没有发布您为达到那么远所做的工作。如果你不向我们展示你做了什么,就很难说你做错了什么。

标签: sql sql-server tsql


【解决方案1】:

根据我的经验,解析地址是一场噩梦。可能至少有十几种方法可以表示同一个地址,而且您将很难想出一种可靠的方法来将各个部分分开。

我的建议是将您拥有的任何地址传递给地图服务(谷歌、雅虎等)并使用它们传回给您的结果。比你和我更聪明的人已经找到了一种非常可靠的方法来做到这一点。我建议您利用他们提供的服务。

【讨论】:

  • 我明白你的意思,但我确实认为这是一个答案。有时最好的答案是采取完全不同的方法。
  • 我同意这是一个解决方案。没有多少嵌套的程序代码会给 OP 一个可靠的答案。答案是外包给专门从事这方面工作的人。
  • 这是实现预期结果的唯一方法。该地址将需要经过标准化/解析过程。从那里您可以轻松地拉出所需的零件。但是自己编写一个代码将是一个项目。
【解决方案2】:

嗯,这是我的替代建议,不是您问题的答案。

字符串操作操作总是非常关键和乏味的工作,而且很多时候它不能完美地工作。

我有一个非常好的替代选项,您会喜欢它。 与其拥有单行地址,不如将其划分为不同的部分。

例如 街道1 街道2 城市 状态 国家

现在您可以在数据库中创建 XML 数据类型并将上述所有字段存储到一个 XML 格式字段中,例如

<Address>
    <street1>data1</street1>
    <street2>data2</street2>
    <city>data3</city>
    <state>data4</state>
    <country>data5</country>
</Address>

优点:

1.如果用户不想输入任何字段或不想显示任何字段,现在您可以灵活地插入和检索数据,那么这是最好的方法。
2.它也会给你很好的性能,因为XML解析比字符串操作更快。
3.XML返回比字符串操作更准确。

【讨论】:

  • 他仍然必须解析数据才能将其转换为这种格式。与每个地址的列相比,使用单个 XML 列有什么优势?
  • 好的,如果他将地址分成不同的列,这很好,所以不需要任何操作,但是如果我们在数据库中看到,那么一个地址会有很多列。我建议使用 XML,因为在解析后它将返回准确的结果,而字符串操作不是那么准确。在 SQL Server 中,XML 解析比字符串操作快。
  • Hrrm,我认为在那个版本的翻译中可能丢失了一些东西。如果您建议解析 XML 比解析字符串更容易,我同意。但我仍然认为,将地址的每一部分放在它自己的列中而不是试图将它们全部放在一个 XML 列中更有意义。
  • 我同意你的观点,不同的列比 XML 或字符串操作更好,但如果他不想在数据库中创建多个列,这是我的选择。
  • 还有一件事,将来当地址需要更多额外字段时,例如PostalCode、Phone Number 当时在 XML 中添加一个简单的标签比改变数据库的结构要好。我希望你同意这一点!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
  • 2016-08-12
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
相关资源
最近更新 更多