Fonctions sur les valeurs de chaîne - contientFunctions on String Values - contains

CETTE RUBRIQUE S’APPLIQUE À : ouiSQL Server (à partir de la version 2012)nonAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Retourne une valeur de type xs : Boolean indiquant si la valeur de $arg1 contient une valeur de chaîne spécifiée par $arg2.Returns a value of type xs:boolean indicating whether the value of $arg1 contains a string value specified by $arg2.

SyntaxeSyntax


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

ArgumentsArguments

arg1 $$arg1
Valeur de chaîne à tester.String value to test.

arg2 $$arg2
Sous-chaîne à rechercher.Substring to look for.

NotesRemarks

Si la valeur de $arg2 est une chaîne de longueur nulle, la fonction retourne True.If the value of $arg2 is a zero-length string, the function returns True. Si la valeur de $arg1 est une chaîne de longueur zéro et la valeur de $arg2 n’est pas une chaîne de longueur nulle, la fonction retourne False.If the value of $arg1 is a zero-length string and the value of $arg2 is not a zero-length string, the function returns False.

Si la valeur de $arg1 ou $arg2 est la séquence vide, l’argument est traité comme chaîne de longueur nulle.If the value of $arg1 or $arg2 is the empty sequence, the argument is treated as the zero-length string.

La fonction contains() utilise le classement des points de code Unicode par défaut de XQuery pour la comparaison des chaînes.The contains() function uses XQuery's default Unicode code point collation for the string comparison.

La valeur de sous-chaîne spécifiée pour $arg2 doit être inférieur ou égal à 4 000 caractères.The substring value specified for $arg2 has to be less than or equal to 4000 characters. 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 de True ou False.If the value specified is greater than 4000 characters, a dynamic error condition occurs and the contains() function returns an empty sequence instead of a Boolean value of True or False. SQL ServerSQL Server ne déclenche pas d'erreurs dynamiques sur les expressions XQuery. does not raise dynamic errors on XQuery expressions.

Pour obtenir des comparaisons sans respecter la casse, le majuscules ou en minuscules fonctions peuvent être utilisées.In order to get case-insensitive comparisons, the upper-case or lower-case functions can be used.

Caractères supplémentaires (paires de substitution)Supplementary Characters (Surrogate Pairs)

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.The behavior of surrogate pairs in XQuery functions depends on the database compatibility level and, in some cases, on the default namespace URI for functions. Pour plus d’informations, consultez la section « XQuery fonctions sont substitut prenant en charge » dans la rubrique modifications avec rupture des fonctionnalités du moteur de base de données dans SQL Server 2016.For more information, see the section "XQuery Functions Are Surrogate-Aware" in the topic Breaking Changes to Database Engine Features in SQL Server 2016. Consultez également ALTER DATABASE Compatibility Level ( Transact-SQL ) et prise en charge Unicode et du classement.Also see ALTER DATABASE Compatibility Level (Transact-SQL) and Collation and Unicode Support.

ExemplesExamples

Cette rubrique fournit des exemples de XQuery relatifs à des instances XML stockées dans différentes colonnes de type xml dans la base de données AdventureWorks.This topic provides XQuery examples against XML instances stored in various xml-type columns in the AdventureWorks database.

A.A. Utilisation de la fonction contains() XQuery pour rechercher une chaîne de caractères spécifique.Using the contains() XQuery function to search for a specific character string

La requête suivante recherche des produits qui contiennent le mot Aerodynamic dans les descriptions résumées.The following query finds products that contain the word Aerodynamic in the summary descriptions. La requête retourne l'ID de produit et l'élément <Summary> pour ces produits.The query returns the ProductID and the <Summary> element for such products.

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

RésultatsResults

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>

Voir aussiSee Also

Fonctions XQuery impliquant le type de données xmlXQuery Functions against the xml Data Type