XPath-search in SQL server

Ich habe das folgende XML in einer SQL server XML Spalte gespeichert. Ich möchte die Zeilen mit SQL SERVER xpath auswählen.

SQL-Abfrage:

SELECT * FROM TABLE WHERE XMLCol.exist('//Players/Player/FirstName/text()[contains(lower-case(.),"luis")]') = 1 

Anstatt zu verwenden, kann ich etwas verwenden, das einen exakten Wert vergleicht?

  <Players> <Player> <FirstName>Luis</FirstName> <LastName>Figo</LastName> </Player> </Players> 

Solutions Collecting From Web of "XPath-search in SQL server"

Hier ist die Lösung:

  SELECT * FROM TABLE WHERE XMLCol.exist('//Players/Player/FirstName[text()[lower-case(.)="luis"]]') = 1 

Sie können die XML- nodes() -Methode verwenden, um Ihre Knotenwerte zu extrahieren und Ihre characterfolge so ähnlich zu vergleichen:

 SELECT * FROM ( SELECT id, xmlfield, pref.value('(text())[1]', 'varchar(32)') AS Names FROM test CROSS APPLY xmlfield.nodes('//Players/Player/FirstName') AS Names(pref) ) AS Result WHERE Names = 'luis'; 

SQL Fiddle Demo