SQL XML 节点提取

SQL XML Node Extraction

我对处理 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)

非常感谢任何帮助:)。

您需要指定要提取的属性

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)