首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL获取XML的叶节点

SQL获取XML的叶节点
EN

Stack Overflow用户
提问于 2018-06-23 01:46:32
回答 1查看 156关注 0票数 2

我正在尝试解析任何叶节点的xml数据,它的结构如下:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
DECLARE @queryID INT = 1 

/* get xml with queryID */
DECLARE @xml XML
SET @xml = (SELECT TOP 1 myPlan FROM myTable 
                    WHERE stmtID in (@queryID))
EN

回答 1

Stack Overflow用户

发布于 2018-06-23 04:59:51

下面将为您提供节点。但是您的示例XML在节点中使用属性a, b, c是无效的。

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50993222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档