我正在尝试解析任何叶节点的xml数据 它的结构如下:
<xmlPlan>
<myOp id='0' usage='0.75'>
....
<myOp id='2' usage='0.45'>
...
</myOp>
<myOp id ='3' usage='0.30'>
...
</myOp>
</myOp>
<myOp id='1' usage='0.35'>
...
</myOp>
</xmlPlan>
我需要选择叶节点1 2和3并操纵这些节点内的使用次数。 我用它来从数据库中提取XML:
DECLARE @queryID INT = 1
/* get xml with queryID */
DECLARE @xml XML
SET @xml = (SELECT TOP 1 myPlan FROM myTable
WHERE stmtID in (@queryID))
答案 0 :(得分:1)
下面将为您提供节点。但是您的示例XML不适用于节点中的属性a, b, c
。
declare @a xml
declare @b xml
create table #t (
v varchar(max)
)
set @a = ' <rootNode>
<node>
<node>
some data
</node>
<node>
some data
</node>
</node>
<node>
some data
</node>
</rootNode>'
Insert into #t(v)
values(convert(varchar(max), @a))
Select @b = v from #t
SELECT c.value('local-name(.)', 'varchar(max)') as 'node'
, c.value('.', 'varchar(max)') as 'value'
from @b.nodes('/rootNode//*[not(*)] ') as a(c)
drop table #t