Dovresti essere in grado di farlo abbastanza facilmente:
SELECT *
FROM WebPageContent
WHERE data.value('(/PageContent/Text)[1]', 'varchar(100)') LIKE 'XYZ%'
Il .value
metodo fornisce il valore effettivo e puoi definirlo da restituire come VARCHAR (), che puoi quindi controllare con un'istruzione LIKE.
Intendiamoci, non sarà molto veloce. Quindi, se hai determinati campi nel tuo XML che devi ispezionare molto, potresti:
- crea una funzione memorizzata che ottiene l'XML e restituisce il valore che stai cercando come VARCHAR ()
- definisci un nuovo campo calcolato sulla tua tabella che chiama questa funzione e rendila una colonna PERSISTED
Con questo, fondamentalmente "estrai" una certa parte dell'XML in un campo calcolato, lo rendi persistente, e poi puoi cercare in modo molto efficiente su di esso (diamine: puoi persino INDICE quel campo!).
Marc