Debería poder hacer esto con bastante facilidad:
SELECT *
FROM WebPageContent
WHERE data.value('(/PageContent/Text)[1]', 'varchar(100)') LIKE 'XYZ%'
El .value
método le da el valor real y puede definir que se devuelva como VARCHAR (), que luego puede verificar con una declaración LIKE.
Eso sí, esto no va a ser demasiado rápido. Entonces, si tiene ciertos campos en su XML que necesita inspeccionar mucho, podría:
- cree una función almacenada que obtenga el XML y devuelva el valor que está buscando como VARCHAR ()
- defina un nuevo campo calculado en su tabla que llame a esta función y conviértalo en una columna PERSISTED
Con esto, básicamente "extraerías" una cierta porción del XML en un campo calculado, harías que persistiera, y luego podrás buscar de manera muy eficiente en él (diablos: ¡incluso puedes INDEX ese campo!).
Bagazo