Sto avendo una tabella con una colonna XML. Mi piacerebbe filtrare le righe in cui un attributo specifico nell'XML corrisponde a una stringa, essenzialmente facendo un WHERE o HAVING.Filtra query SQL nella colonna XML utilizzando XPath/XQuery
La tabella simile a questa
| id | xml |
E il qualcosa di simile a XML
<xml>
<info name="Foo">
<data .../>
</info>
<xml>
voglio ottenere tutti gli ID in cui l'attributo @name abbinato un valore.
sono stato in grado di effettuare le seguenti operazioni:
SELECT id, xml.query('data(/xml/info/@name)') as Value
FROM Table1
WHERE CAST(xml.query('data(/xml/info/@name)') as varchar(1024)) = @match
Ma è incredibilmente lento.
Ci deve essere un modo migliore per filtrare l'output della query.
Se non l'hai già fatto, Vorrei anche suggerire facendo indici in modo di avere sulle vostre colonne XML. > [Panoramica degli indici XML (SQLServerPedia.com)] (http://sqlserverpedia.com/wiki/XML_Indexes_Overview) – Kev