【问题标题】:SQL XML Node ExtractionSQL XML 节点提取
【发布时间】:2021-09-03 01:51:06
【问题描述】:

我对在 SQL 中处理 XML 数据比较陌生,所以请原谅任何“愚蠢”的错误:p.

本质上我想要做的是,从以下 XML 中提取“之前”和“之后”值:

<AuditData>
  <Field Name="BrandEmailSubscribed">
    <Before Value="True" />
    <After Value="False" />
  </Field>
  <Metadata Type="OperatorInstigated">
    <Note></Note>
  </Metadata>
</AuditData>

我曾尝试使用以下 SQL,但这会返回一个空白值(虽然不是 NULL)。

select top 10 C.B.value('(Before)[1]','VARCHAR(100)'),AD.* from Table AD
OUTER APPLY AD.Data.nodes('AuditData/Field') AS C(B)

非常感谢任何帮助:)。

【问题讨论】:

    标签: sql xml tsql ssms


    【解决方案1】:

    需要指定要提取的属性

    select top 10 C.B.value('(Before/@Value)[1]','VARCHAR(100)'), AD.* 
    from Table AD
    OUTER APPLY AD.Data.nodes('AuditData/Field') AS C(B)
    

    【讨论】:

    • 非常感谢您!这是一种享受。当然保存在我的笔记中以供参考!!
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多