Sql server SQL解析特定节点及其标记的XML
我使用以下方法获取特定的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'> ....
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>';