У меня есть следующий XML, хранящийся в поле XML в базе данных SQL Server 2008.
<attributes>
<attribute>
<key>animal</key>
<value>rat</value>
</attribute>
<attribute>
<key>color</key>
<value>black</value>
</attribute>
</attributes>
Я могу выбрать все записи из таблицы, у которых есть ключ «животное» со значением «крысы» со следующим xpath в sql.
SELECT *
FROM XmlEvents
WHERE Attributes.exist('/attributes/attribute[key="animal" and value="rat"]') = 1
Как мне проверить совпадения с несколькими атрибутами?
Я пытаюсь найти строки, где: (Ключ = Животное и Значение = Крыса) И (Ключ = Цвет и Значение = Черный).
(Да, я мог бы поместить другой .exist с оператором AND в предложение WHERE, но я стараюсь этого избегать)
Бонусные баллы, если вы можете вести меня в правильном направлении, чтобы сделать это несколько динамичным. Я хотел бы иметь хранимую процедуру или функцию, которая могла бы каким-то образом взять список пар ключ/значение и найти все строки, которые соответствуют всему предоставленному.