与其他帖子类似,我需要从表中检索对 Xml 列应用条件的任何行,例如,假设您有一个如下所示的 xml 列:
<DynamicProfile xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WinTest">
<AllData xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d2p1:KeyValueOfstringstring>
<d2p1:Key>One</d2p1:Key>
<d2p1:Value>1</d2p1:Value>
</d2p1:KeyValueOfstringstring>
<d2p1:KeyValueOfstringstring>
<d2p1:Key>Two</d2p1:Key>
<d2p1:Value>2</d2p1:Value>
</d2p1:KeyValueOfstringstring>
</AllData>
</DynamicProfile>
我的查询将能够返回节点值所在的所有行<d2p1:Key> = 'some key value'
AND 节点值<d2p1Value = 'some value value'
.
将其想象为一个动态表,其中 KEY 节点代表列名,Value 节点代表列的值。
以下查询不起作用,因为键和值节点不连续:
select * from MyTable where
MyXmlField.exist('//d2p1:Key[.="One"]') = 1
AND MyXmlField.exist('//d2p1:Value[.="1"]') = 1
而不是寻找//d2p1:key[.="One"]
and //d2p1:Value[.="1"]
作为两个单独的搜索,执行一次同时查找这两个搜索的单个查询,如下所示:
//d2p1:KeyValueOfstringstring[./d2p1:Key="One"][./d2p1:Value=1]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)