我正在尝试解析任何叶节点的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))
发布于 2018-06-23 04:59:51
下面将为您提供节点。但是您的示例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
https://stackoverflow.com/questions/50993222
复制相似问题