Fonctions sur des valeurs de chaîne - concatFunctions on String Values - concat

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

Accepte zéro ou plusieurs chaînes comme arguments et renvoie une chaîne créée suite à la concaténation des valeurs de chacun de ces arguments.Accepts zero or more strings as arguments and returns a string created by concatenating the values of each of these arguments.

SyntaxeSyntax


fn:concat ($string as xs:string?  
           ,$string as xs:string?  
           [, ...]) as xs:string  

ArgumentsArguments

$string$string
Chaîne facultative à concaténer.Optional string to concatenate.

NotesRemarks

La fonction requiert au moins deux arguments.The function requires at least two arguments. Si un argument est une séquence vide, elle est traitée comme une chaîne de longueur zéro.If an argument is an empty sequence, it is treated as the zero-length string.

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és dans différentes xml colonnes de type dans la base de données AdventureWorks.This topic provides XQuery examples against XML instances that are stored in various xml type columns in the AdventureWorks sample database.

A.A. Utilisation de la fonction XQuery concat() pour concaténer des chaînesUsing the concat() XQuery function to concatenate strings

Pour un modèle de produit spécifique, cette requête renvoie une chaîne obtenue d'après la concaténation de la période et de la description de la garantie.For a specific product model, this query returns a string created by concatenating the warranty period and warranty description. Dans le document de la description du catalogue, l'élément <Warranty> est constitué des éléments enfants <WarrantyPeriod> et <Description>.In the catalog description document, the <Warranty> element is made up of <WarrantyPeriod> and <Description> child elements.

WITH XMLNAMESPACES (  
'http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd,  
'http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)  
SELECT CatalogDescription.query('  
    <Product   
        ProductModelID= "{ (/pd:ProductDescription/@ProductModelID)[1] }"  
        ProductModelName = "{ sql:column("PD.Name") }" >  
        {   
          concat( string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:WarrantyPeriod)[1]), "-",  
                  string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:Description)[1]))   
         }   
     </Product>  
 ') as Result  
FROM Production.ProductModel PD  
WHERE  PD.ProductModelID=28  

Notez les points suivants dans la requête précédente :Note the following from the previous query:

  • Dans la clause SELECT, CatalogDescription est une xml colonne de type.In the SELECT clause, CatalogDescription is an xml type column. Par conséquent, le méthode query() (type de données XML), instructions.Query (), est utilisé.Therefore, the query() method (XML data type), Instructions.query(), is used. L'instruction XQuery est spécifiée comme argument de la méthode query.The XQuery statement is specified as the argument to the query method.

  • Le document sur lequel porte la requête utilise des espaces de noms.The document against which the query is executed uses namespaces. Par conséquent, le espace de noms mot clé est utilisé pour définir le préfixe pour l’espace de noms.Therefore, the namespace keyword is used to define the prefix for the namespace. Pour plus d’informations, consultez prologue XQuery.For more information, see XQuery Prolog.

    Voici le résultat obtenu :This is the result:

<Product ProductModelID="28" ProductModelName="Road-450">1 year-parts and labor</Product>  

La requête précédente récupère les informations se rapportant à un produit spécifique.The previous query retrieves information for a specific product. La requête suivante récupère les mêmes informations mais pour tous les produits pour lesquels il existe des descriptions de catalogue XML.The following query retrieves the same information for all the products for which XML catalog descriptions are stored. Le exist() méthode de la xml de type de données dans la clause WHERE renvoie la valeur True si le document XML dans les lignes a une <ProductDescription> élément.The exist() method of the xml data type in the WHERE clause returns True if the XML document in the rows has a <ProductDescription> element.

WITH XMLNAMESPACES (  
'http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd,  
'http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)  

SELECT CatalogDescription.query('  
    <Product   
        ProductModelID= "{ (/pd:ProductDescription/@ProductModelID)[1] }"   
        ProductName = "{ sql:column("PD.Name") }" >  
        {   
          concat( string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:WarrantyPeriod)[1]), "-",  
                  string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:Description)[1]))   
         }   
     </Product>  
 ') as Result  
FROM Production.ProductModel PD  
WHERE CatalogDescription.exist('//pd:ProductDescription ') = 1  

Notez que la valeur booléenne retournée par le exist() méthode de la xml type est comparé à 1.Note that the Boolean value returned by the exist() method of the xml type is compared with 1.

Limites de mise en œuvreImplementation Limitations

Les limitations suivantes s'appliquent :These are the limitations:

  • Le concat() fonction dans SQL Server accepte seulement des valeurs de type xs : String.The concat() function in SQL Server only accepts values of type xs:string. Les autres valeurs doivent être explicitement converties en xs:string ou en xdt:untypedAtomic.Other values have to be explicitly cast to xs:string or xdt:untypedAtomic.

Voir aussiSee Also

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