Exporter (0) Imprimer
Développer tout

contains, fonction (XQuery)

Retourne une valeur de type xs:boolean indiquant si la valeur de $arg1 contient une valeur de chaîne spécifiée par $arg2.


fn:contains ($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean?

$arg1

Valeur de chaîne à tester.

$arg2

Sous-chaîne à rechercher.

Si la valeur de $arg2 est une chaîne de longueur zéro, la fonction retourne True. Si la valeur de $arg1 est une chaîne de longueur zéro et que la valeur de $arg2 n'est pas une chaîne de longueur zéro, la fonction retourne False.

Si la valeur de $arg1 ou de $arg2 est la séquence vide, l'argument est traité comme chaîne de longueur zéro.

La fonction contains() utilise le classement des points de code Unicode par défaut de XQuery pour la comparaison des chaînes.

La valeur de sous-chaîne spécifiée pour $arg2 doit être inférieure ou égale à 4 000 caractères. Si la valeur spécifiée est supérieure à 4 000 caractères, une condition d'erreur dynamique se produit et la fonction contains() retourne une séquence vide au lieu d'une valeur booléenne True ou False. SQL Server 2005 ne déclenche pas d'erreurs dynamiques sur les expressions XQuery.

Cette rubrique fournit des exemples XQuery sur des instances XML stockées dans différentes colonnes de type xml dans la base de données AdventureWorks. Pour obtenir une vue d'ensemble de chaque colonne, consultez Représentation du type de données xml dans la base de données AdventureWorks.

A. Utilisation de la fonction contains() XQuery pour rechercher une chaîne de caractères spécifique.

La requête suivante recherche des produits qui contiennent le mot Aerodynamic dans leur synthèse de description. La requête retourne l'ID de produit et l'élément <Summary> pour ces produits.

WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)
SELECT ProductModelID, CatalogDescription.query('
      <Prod>
         { /pd:ProductDescription/@ProductModelID }
         { /pd:ProductDescription/pd:Summary }
      </Prod>
 ') as Result
FROM Production.ProductModel
where CatalogDescription.value('
  contains( (/pd:ProductDescription/pd:Summary//*/text())[1], 
            "Aerodynamic")','bit')  = 1

Notez les éléments suivants relatifs à la requête précédente :

  • Le document de description de modèles de produits utilise des espaces de noms. Par conséquent, le mot clé namespace définit le préfixe d'espace de noms dans XQuery Prolog.
  • La clause WHERE utilise la méthode value() du type de données xml. À l'intérieur de la méthode, la fonction XQuery contains() est utilisée pour déterminer si le texte <Summary> contient le mot Aerodynamic. La valeur booléenne retournée par la fonction contains() est convertie en bit. Celui-ci est ensuite comparé à 1.

Voici le résultat obtenu :

ProductModelID Result
-------------- ---------
28     <Prod ProductModelID="28">
        <pd:Summary xmlns:pd= 
          "http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">
         <p1:p xmlns:p1="http://www.w3.org/1999/xhtml">
           A TRUE multi-sport bike that offers streamlined riding and 
           a revolutionary design. Aerodynamic design lets you ride with 
          the pros, and the gearing will conquer hilly roads.</p1:p>
        </pd:Summary>
       </Prod>
Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft