SQL-使用OPENXML列出给定标签的属性名称和值

时间:2018-11-14 14:32:46

标签: sql openxml

我从外部来源获得以下XML:

<Op>
  <Venc v110="100.01" v120="200.02"/>
</Op>

使用OPENXML,有没有一种方法可以查询上述xml,使输出看起来像这样?

AttributeName  Value
v110           100.01
v120           200.02

理想的解决方案将是动态的,因为它可以有效地工作,而不必在代码中显式列出每个可能的属性名称。

另外,为了参考我希望实现的目标,这是使用@ XML.nodes的可行解决方案,可提供所需的结果:

declare @XML as xml
SET @XML = '<Op><Venc v110="100.01" v120="200.02"/></Op>'

SELECT 
  b.value('local-name(.)','VARCHAR(50)') AS AttributeName,  -- get attribute name
  b.value('.','decimal(20,2)') AS Value  -- get attribute value
FROM @XML.nodes('Op/Venc') p(k)
CROSS APPLY k.nodes('@*') a(b)

谢谢。

0 个答案:

没有答案