Estoy teniendo una tabla con una columna XML. Me gustaría filtrar las filas donde un atributo específico en el XML coincide con una cadena, esencialmente haciendo un WHERE o HAVING.Filtrar consultas SQL en la columna XML usando XPath/XQuery
La mesa se ve algo como esto
| id | xml |
Y el XML algo similar a
<xml>
<info name="Foo">
<data .../>
</info>
<xml>
quiero conseguir todos los identificadores de los que el atributo @Name igualó su valor.
he sido capaz de hacer lo siguiente:
SELECT id, xml.query('data(/xml/info/@name)') as Value
FROM Table1
WHERE CAST(xml.query('data(/xml/info/@name)') as varchar(1024)) = @match
Pero es increíblemente lento.
Debe haber una mejor manera de filtrar en el resultado de la consulta.
Si no lo ha hecho, También me sugieren hacer índices de que usted tiene en sus columnas XML. > [Descripción general de índices XML (SQLServerPedia.com)] (http://sqlserverpedia.com/wiki/XML_Indexes_Overview) – Kev