Si dovrebbe essere in grado di farlo abbastanza facilmente:
SELECT *
FROM WebPageContent
WHERE data.value('(/PageContent/Text)[1]', 'varchar(100)') LIKE 'XYZ%'
Il metodo .value
fornisce il valore effettivo ed è possibile definirlo come VARCHAR(), che è possibile verificare con un'istruzione LIKE.
Intendiamoci, questo non sarà terribilmente veloce. Quindi, se si dispone di alcuni campi nel XML che è necessario per ispezionare un sacco, si potrebbe:
- creare una funzione memorizzata che ottiene il codice XML e restituisce il valore che stai cercando come VARCHAR()
- definire un nuovo campo calcolato sul vostro tavolo che chiama questa funzione, e renderlo una colonna PERSISTED
Con questo, si sarebbe sostanzialmente "estrarre" una certa porzione di XML in un campo calcolato, renderlo persisteva , e quindi puoi cercare in modo molto efficiente su di esso (diamine: puoi anche INDICE quel campo!).
Marc
fonte
2009-12-02 13:45:37
possibile duplicato del [Il modo migliore per cercare i dati memorizzati come XML in Sql Server?] (http://stackoverflow.com/questions/52945/best-way-to-search-data-stored-as-xml-in-sql-server) –