Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL解析特定节点及其标记的XML_Sql Server_Xml_Ssms_Nodes - Fatal编程技术网

Sql server SQL解析特定节点及其标记的XML

Sql server SQL解析特定节点及其标记的XML,sql-server,xml,ssms,nodes,Sql Server,Xml,Ssms,Nodes,我使用以下方法获取特定的XML: DECLARE @queryID INT = 1 /* get xml with queryID */ DECLARE @xml XML SET @xml = (SELECT TOP 1 myPlan FROM myTable WHERE stmtID in (@queryID)) 它返回的XML如下所示: <xmlPlan> <myOp id='0' usage='0.75'> ....

我使用以下方法获取特定的XML:

DECLARE @queryID INT = 1 

/* get xml with queryID */
DECLARE @xml XML
SET @xml = (SELECT TOP 1 myPlan FROM myTable 
                WHERE stmtID in (@queryID))
它返回的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>

....
...
...
...

我需要为myOp节点解析这个XML,看看它们的用法标记是否大于.50。这些节点应始终为叶节点,但其嵌套级别可能会更改


任何帮助都会很好。谢谢。

您可以使用类似的方法(我在节点中的周围添加了一些节点):

查询将使用
/xmlPlan
下面的深度搜索(
/
)查找任何
。谓词
[@usage>0.4]
将只选择那些属性
usage
超过0.4(本例中为两行)的属性

剩下的是一些你可能需要的元信息-或者不需要的元信息

DECLARE @xml XML=
N'<xmlPlan>
<myOp id="0" usage="0.75">
    <OuterNode SomeAttr="outer1">
    <myOp id="2" usage="0.45">
        <someInnerNode SomeAttr="inner1"/>
    </myOp>
    <myOp id ="3" usage="0.30">
        <anotherInnerNode SomeAttr="inner2"/>
    </myOp>
    </OuterNode>
</myOp>
<myOp id="1" usage="0.35">
    <InnerNode SomeAttr="inner3" />
</myOp>
</xmlPlan>';