sql >> Database >  >> RDS >> Sqlserver

SQL Server 2008 XPath

U kunt de .exist() . gebruiken methode - zoiets als dit:

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

Hiermee wordt vergeleken met die specifieke waarde die u hebt opgegeven. Hoe nauwkeuriger u de XPath kunt definiëren waar die waarde naar verwachting zal worden gevonden, hoe beter voor uw prestaties.

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

is behoorlijk slecht - het onderzoekt elke afzonderlijke <Value> knooppunt ergens in de XML om die waarde te vinden.

Zoiets als dit:

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

zou veel gerichter zijn en dus veel beter voor de prestaties - maar het zou alleen die specifieke knooppunten zijn die worden gedefinieerd door diezelfde XPath-instructie



  1. PDO sqlsrv:kon stuurprogramma niet vinden

  2. XML-tekenreeks ontleden die is opgeslagen op Oracle Table

  3. Ontvang je de maandag van deze week in Postgres?

  4. Een datum weergeven in Amerikaanse datumnotatie in SQL Server (T-SQL)