Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server 2008 XPath

Sie können .exist() verwenden Methode - ungefähr so:

SELECT 
(list of columns) 
FROM
dbo.YourTable
WHERE
YourXmlColumn.exist('//Value[text()="5052095050830"]') = 1

Dies wird mit dem bestimmten Wert verglichen, den Sie angegeben haben. Je genauer Sie den XPath definieren können, in dem dieser Wert erwartet wird, desto besser für Ihre Leistung.

YourXmlColumn.exist('//Value[text()="5052095050830"]') = 1

ist ziemlich schlecht - es untersucht jeden einzelnen <Value> Knoten irgendwo im XML, um diesen Wert zu finden.

Etwa so:

YourXmlColumn.exist('/Attributes/ProductVariantAttribute/ProductVariantAttributeValue/Value[text()="5052095050830"]') = 1

wäre viel fokussierter und damit viel besser für die Leistung - aber es wären nur die bestimmten Knoten, die durch genau diese XPath-Anweisung definiert sind