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