sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2008 XPath

Du kan använda .exist() metod - ungefär så här:

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

Detta kontrollerar mot det specifika värdet du har angett. Ju mer exakt du kan definiera XPath där det värdet förväntas finnas, desto bättre för din prestation.

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

är ganska dålig - den undersöker varenda <Value> nod var som helst i XML för att hitta det värdet.

Något så här:

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

skulle vara mycket mer fokuserad och därmed mycket bättre för prestanda - men det skulle bara vara de specifika noder som definieras av just den XPath-satsen



  1. Använder setDate i PreparedStatement

  2. Laravel kan inte ansluta till databasen - Migrationer - Fel 2002

  3. Ändra vy inom lagrad procedur

  4. Kan vi omfördela Oracle tools.jar?