我有以下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