У меня есть таблица с одним столбцом XML. Я хотел бы отфильтровать строки, в которых определенный атрибут в XML совпадает со строкой, по сути, делая WHERE или HAVING.
Таблица выглядит примерно так
| id | xml |
А XML что-то похожее на
<xml>
<info name="Foo">
<data .../>
</info>
<xml>
Я хочу получить все идентификаторы, в которых атрибут @name соответствует значению.
Мне удалось сделать следующее:
SELECT id, xml.query('data(/xml/info/@name)') as Value
FROM Table1
WHERE CAST(xml.query('data(/xml/info/@name)') as varchar(1024)) = @match
Но это невероятно медленно.
Должен быть лучший способ фильтрации выходных данных запроса.