【问题标题】:How to get required XML element from not well formed XML data in SQL server如何从 SQL Server 中格式不正确的 XML 数据中获取所需的 XML 元素
【发布时间】:2010-10-18 22:17:36
【问题描述】:

在我的 SQL 2008 数据库表中,我有一个包含 XML 数据的列名 AUTHOR。 XML 格式不正确,具有如下数据

<Author>
<ID>172-32-1176</ID>
<LastName>White</LastName>
<FirstName>Johnson</FirstName>
<Address>
<Street>10932 Bigge Rd.</Street>
<City>Menlo Park</City>
<State>CA</State>
</Address>
</Author>

有些 XML 包含上述所有数据,有些只有一个标签。

<ID>172-32-1176</ID>

我想编写一个查询,它返回一个列作为标识。 我尝试使用 AUTHOR.query('data(/Author/ID)') 作为身份,但是当 XML 没有作者节点时它会失败。

谢谢, 维杰

【问题讨论】:

    标签: sql xml tsql xpath


    【解决方案1】:

    您是否尝试过 /Author/ID|/ID 之类的方法?即尝试第一个场景,没有匹配,第二个?

    (注意| 运算符是集合联合运算符,如here 所述)

    【讨论】:

      【解决方案2】:

      如果除了唯一的 ID 元素包含所需的标识值之外,没有任何关于 XML 的“确定”可以维护,那么以下 XPath 表达式将选择 ID 元素:

      //ID
      

      【讨论】:

      • 关于这个语句你应该知道的一点是它的性能不是很好。如果您的文档很大,我会避免这种情况。
      • @Eric-T:当然——我总是提到这一点。这就是为什么我说这仅用于“以防万一无法维护有关 XML 的任何“确定””
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 2010-12-06
      • 2021-09-05
      • 1970-01-01
      相关资源
      最近更新 更多