Fonctions sur les valeurs de chaîne : contains
S’applique à :SQL Server
Retourne une valeur de type xs:boolean indiquant si la valeur de $arg 1 contient une valeur de chaîne spécifiée par $arg 2.
Syntaxe
fn:contains ($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean?
Arguments
$arg 1
Valeur de chaîne à tester.
$arg 2
Sous-chaîne à rechercher.
Remarques
Si la valeur de $arg 2 est une chaîne de longueur nulle, la fonction retourne True. Si la valeur de $arg 1 est une chaîne de longueur nulle et que la valeur de $arg 2 n’est pas une chaîne de longueur nulle, la fonction retourne False.
Si la valeur de $arg 1 ou $arg 2 est la séquence vide, l’argument est traité comme la chaîne de longueur nulle.
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 $arg 2 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 ne génère pas d’erreurs dynamiques sur les expressions XQuery.
Pour obtenir des comparaisons qui ne respectent pas la casse, les fonctions majuscules ou minuscules peuvent être utilisées.
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 sont compatibles avec les substituts » dans la rubrique Modifications cassants apportées aux fonctionnalités du moteur de base de données dans SQL Server 2016. Consultez également ALTER DATABASE Compatibility Level (Transact-SQL) et Classement et Prise en charge Unicode.
Exemples
Cette rubrique fournit des exemples XQuery par rapport aux instances XML stockées dans différentes colonnes de type xml dans la base de données AdventureWorks.
R. 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 AdventureWorks2022;
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>