Sie sollten dies ganz einfach tun können:
SELECT *
FROM WebPageContent
WHERE data.value('(/PageContent/Text)[1]', 'varchar(100)') LIKE 'XYZ%'
Die .value
Methode gibt Ihnen den tatsächlichen Wert an, und Sie können diesen als VARCHAR () zurückgeben, der Sie dann mit einer LIKE-Anweisung überprüfen können.
Wohlgemerkt, das wird nicht besonders schnell gehen. Wenn Sie also bestimmte Felder in Ihrem XML haben, die Sie häufig überprüfen müssen, können Sie:
- Erstellen Sie eine gespeicherte Funktion, die das XML abruft und den gesuchten Wert als VARCHAR () zurückgibt.
- Definieren Sie ein neues berechnetes Feld in Ihrer Tabelle, das diese Funktion aufruft, und machen Sie es zu einer PERSISTED-Spalte
Damit würden Sie im Grunde genommen einen bestimmten Teil des XML in ein berechnetes Feld "extrahieren", es beibehalten und dann sehr effizient danach suchen (zum Teufel: Sie können dieses Feld sogar INDEXIEREN!).
Marc