Recherche de chaînes dans XQuery

Cette rubrique propose des exemples de requêtes illustrant la méthode de recherche de texte dans des documents XML.

Exemples

A. Recherche de descriptions de caractéristiques contenant le mot « maintenance » dans le catalogue de produits

SELECT CatalogDescription.query('
     declare namespace p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
    for $f in /p1:ProductDescription/p1:Features/*
     where contains(string($f), "maintenance")
     return
           $f ') as Result
FROM Production.ProductModel
WHERE ProductModelID=19

Dans la requête précédente, l'argument where de l'expression FLOWR filtre le résultat de l'expression for et ne renvoie que les éléments satisfaisant la condition contains().

Voici le résultat obtenu :

<p1:Maintenance   
      xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain">
 <p1:NoOfYears>10</p1:NoOfYears>
 <p1:Description>maintenance contact available through your 
               dealer or any Adventure Works Cycles retail store.</p1:Description>
</p1:Maintenance>