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> 

  • Extrahieren von Werten aus der zweistufigen XML-list in die SQL-Spalte
  • tsql für xml, komplexe xml
  • Shred XML für jede Zeile in SQL-Tabelle
  • TSQL xml.modify replace Wert für Knoten mit Wert
  • Wählen Sie SQL Query aus, um XML-Knotenwerte aus der ntext-Spalte zu erhalten.
  • SQL-server: So trennen Sie XML-Knoten in verschiedenen Zeilen
  • Wählen Sie XML-Element in SQL server aus
  • Warum ist CROSS APPLY bei der Verwendung von XPath-Abfragen erforderlich?
  • 2 Solutions collect form web for “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

    SQL DE: Microsoft SQL Server, MySQL, Oracle and other Structured Query Languages .