输入XML:
<Hierarchy><Relation>
<Child>
<Name>XYZ</Name>
<Age>10</Age>
</Child>
<IsEldest>True</IsEldest>
</Relation>
<Relation>
<Child>
<Name>ABC</Name>
<Age>5</Age>
</Child>
</Relation>
<Relation>
<Child>
<Name>PQR</Name>
<Age>3</Age>
</Child>
</Relation></Hierarchy>
预期结果:
<Relation>
<Child>
<Name>ABC</Name>
<Age>5</Age>
</Child>
</Relation>
<Relation>
<Child>
<Name>PQR</Name>
<Age>3</Age>
</Child>
</Relation>
如何在单个sql xml查询中使用sql server检索预期结果。 应提取不具有IsEldest标记的节点。 可以使用@ xml.modify选择使用IsEldes节点删除Relation标记。但是提取所需xml的任何其他方法?
答案 0 :(得分:2)
@xml.query('//Relation[not(IsEldest[1]="True")]')
答案 1 :(得分:1)
您可以使用XQuery
表达式FLWOR
方法:
DECLARE @xml XML=
'<Hierarchy>
<Relation>
<Child>
<Name>XYZ</Name>
<Age>10</Age>
</Child>
<IsEldest>True</IsEldest>
</Relation>
<Relation>
<Child>
<Name>ABC</Name>
<Age>5</Age>
</Child>
</Relation>
<Relation>
<Child>
<Name>PQR</Name>
<Age>3</Age>
</Child>
</Relation>
</Hierarchy>';
- 查询(根据TT。评论编辑)
SELECT @xml.query
(N'
<Relation>
{
for $c in /Hierarchy/Relation[not(IsEldest[1]="True")]/Child
return $c
}
</Relation>
');
结果
<Relation>
<Child>
<Name>ABC</Name>
<Age>5</Age>
</Child>
<Child>
<Name>PQR</Name>
<Age>3</Age>
</Child>
</Relation>