read raw nodos leer for column attribute sql-server xml search xquery

raw - ¿La mejor forma de buscar datos almacenados como XML en SQL Server?



xml nodes sql server (4)

Esta pregunta ya tiene una respuesta aquí:

Digamos que tengo estructuras de datos almacenadas como XML (tipo de datos XML) dentro de SQL Server. Un usuario desea extraer un registro si, dentro de los datos, se encuentra una determinada cadena.

¿Cuáles son mis opciones para implementar esto y cuál es la mejor manera de hacerlo?

Tenga en cuenta que cada registro puede tener diferentes estructuras de datos XML.


Creo que si crees que deberás buscar el XML de forma regular, ahorrarás mucho al extraer algunos de los campos del XML en sus propias columnas en la base de datos. Almacenar el XML como un fragmento de texto no es muy amistoso con las bases de datos: no se puede indexar, almacenar en caché de forma adecuada o utilizar en consultas complejas con facilidad.


Encontré el soporte de XQuery en SQL 2005 muy útil.


Si su Xml está fuertemente tipado, como tiene un esquema, use las cosas de XQuery y cree vistas en la parte superior de sus columnas Xml. Las cosas fuertemente tipadas no son un requisito, de ninguna manera, pero le permiten construir sus puntos de vista de manera predecible.


Puede buscar el XML como una cadena sin usar XQuery convirtiéndolo en una cadena y luego utilizando LIKE. Sin embargo, como una columna calculada no puede formar parte de una cláusula WHERE, debe envolverla en otro SELECT como este:

SELECT * FROM (SELECT *, CONVERT(varchar(MAX), [XMLData]) as [XMLDataString] FROM [NamedTable]) irrelevant WHERE [XMLDataString] like ''%SEARCH_STRING%''