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.

Syntaxe

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

Arguments

  • $arg1
    Valeur de chaîne à tester.

  • $arg2
    Sous-chaîne à rechercher.

Notes

Si la valeur de $arg2 est une chaîne nulle, la fonction retourne la valeur True. Si la valeur de $arg1 est une chaîne nulle et que la valeur de $arg2 n'est pas une chaîne nulle, la fonction retourne la valeur 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 à 4000 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 pour True ou False. SQL Server ne déclenche pas d'erreurs dynamiques sur les expressions XQuery.

Pour obtenir des comparaisons qui ne respectent pas la casse, il est possible d'utiliser les fonctions upper-case ou lower-case.

Caractères supplémentaires (paires de substitution)

Le comportement de la paire de substitution dans des fonctions XQuery dépend du niveau de compatibilité de la base de données et, dans certains cas, de l'URI de l'espace de noms par défaut des fonctions. Pour plus d'informations, consultez la section « Les fonctions XQuery prennent en charge la substitution » dans la rubrique Changements essentiels dans les fonctionnalités du moteur de base de données de SQL Server 2012. Consultez également Niveau de compatibilité ALTER DATABASE (Transact-SQL) et Prise en charge d'Unicode et du classement.

Exemples

Cette rubrique fournit des exemples de requêtes XQuery impliquant des instances XML stockées dans différentes colonnes de type 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 les descriptions résumées. La requête retourne l'ID de produit et l'élément <Summary> pour ces produits.

--The product model description document uses
--namespaces. The WHERE clause uses the exit()
--method of the xml data type. Inside the exit method,
--the XQuery contains()function is used to
--determine whether the <Summary> text contains the word
--Aerodynamic. 

USE AdventureWorks
GO
WITH XMLNAMESPACES ('https://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.exist('
   /pd:ProductDescription/pd:Summary//text()
    [contains(., "Aerodynamic")]') = 1

Résultats

ProductModelID Result

-------------- ---------

28 <Prod ProductModelID="28">

<pd:Summary xmlns:pd=

"https://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>

Voir aussi

Référence

Fonctions XQuery impliquant le type de données xml