我有以下XML存储在SQL Server 2008数据库的XML字段中。XPath检查是否存在所有提供的元素对
<attributes>
<attribute>
<key>animal</key>
<value>rat</value>
</attribute>
<attribute>
<key>color</key>
<value>black</value>
</attribute>
</attributes>
我能够选择所有从表中具有与SQL中的以下XPath“老鼠”的值的“动物”键的条目。
SELECT *
FROM XmlEvents
WHERE Attributes.exist('/attributes/attribute[key="animal" and value="rat"]') = 1
如何检查具有多个属性的匹配? (Key = Animal & Value = Rat)AND(Key = Color & Value = Black)我试图找到以下行:(Key = Animal & Value = Rat)AND(Key = Color & Value = Black)。
(是的,我可以把另一个.exist用在我的WHERE子句,但我试图避免)
奖励积分,如果你能引导我正确的方向,使一些这方面的 - 什么是动态的。我很想拥有一个存储过程或函数,它可以以某种方式获取键/值对列表并找到与提供的所有内容相匹配的所有行。
为什么你想避免第二'和EXISTS'?你认为这会带来更好的表现吗? – Aaronaught 2010-02-23 04:56:44
我想比较所有的可能性。你认为AND EXISTS会比Markusk提供的xpath更好吗? – Vyrotek 2010-02-23 05:35:03
+1问题是我能发现SQL Server中存在“.exist()= 1”语法的唯一文档。 – 2012-12-17 22:48:44