+ (Concaténation de chaîne) (Transact-SQL)+ (String Concatenation) (Transact-SQL)

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabaseouiAzure SQL Data Warehouse ouiParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Opérateur dans une expression de chaîne qui concatène des chaînes binaires ou des chaînes de deux caractères ou plus, des colonnes ou une combinaison de chaînes et de noms de colonnes, pour former une seule expression (un opérateur chaîne).An operator in a string expression that concatenates two or more character or binary strings, columns, or a combination of strings and column names into one expression (a string operator). Par exemple SELECT 'book'+'case'; retourne bookcase.For example SELECT 'book'+'case'; returns bookcase.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

expression + expression  

ArgumentsArguments

expressionexpression
Valide expression de tout des données de type de caractère ou de la catégorie de type de données binaires, sauf le image, ntext, ou texte des types de données.Is any valid expression of any one of the data types in the character and binary data type category, except the image, ntext, or text data types. Les deux expressions doivent être de même type de données, ou l'une des expressions doit pouvoir être implicitement convertie dans le type de données de l'autre expression.Both expressions must be of the same data type, or one expression must be able to be implicitly converted to the data type of the other expression.

Pour concaténer des chaînes binaires et tout caractère compris entre ces chaînes, il faut utiliser une conversion explicite en données de type caractère.An explicit conversion to character data must be used when concatenating binary strings and any characters between the binary strings. L’exemple suivant montre quand CONVERT, ou CAST, doit être utilisé avec une concaténation binaire et à quel moment CONVERT, ou CAST, ne doit pas être utilisé.The following example shows when CONVERT, or CAST, must be used with binary concatenation and when CONVERT, or CAST, does not have to be used.

DECLARE @mybin1 varbinary(5), @mybin2 varbinary(5)  
SET @mybin1 = 0xFF  
SET @mybin2 = 0xA5  
-- No CONVERT or CAST function is required because this example   
-- concatenates two binary strings.  
SELECT @mybin1 + @mybin2  
-- A CONVERT or CAST function is required because this example  
-- concatenates two binary strings plus a space.  
SELECT CONVERT(varchar(5), @mybin1) + ' '   
   + CONVERT(varchar(5), @mybin2)  
-- Here is the same conversion using CAST.  
SELECT CAST(@mybin1 AS varchar(5)) + ' '   
   + CAST(@mybin2 AS varchar(5))  

Types des résultatsResult Types

Retourne le type de données de l'argument dont la priorité est la plus élevée.Returns the data type of the argument with the highest precedence. Pour plus d’informations, consultez Priorités des types de données (Transact-SQL).For more information, see Data Type Precedence (Transact-SQL).

NotesRemarks

L'opérateur + (Concaténation de chaîne) se comporte différemment selon qu'il est utilisé avec une chaîne vide et de longueur nulle ou avec des valeurs NULL.The + (String Concatenation) operator behaves differently when it works with an empty, zero-length string than when it works with NULL, or unknown values. Une chaîne de caractères de longueur nulle peut être spécifiée par deux guillemets simples sans caractères à l'intérieur.A zero-length character string can be specified as two single quotation marks without any characters inside the quotation marks. Une chaîne binaire de longueur nulle peut être spécifiée par 0x sans aucune valeur d'octet dans la constante hexadécimale.A zero-length binary string can be specified as 0x without any byte values specified in the hexadecimal constant. La concaténation d'une chaîne de longueur nulle concatène toujours deux chaînes spécifiées.Concatenating a zero-length string always concatenates the two specified strings. Lorsque vous opérez avec des chaînes dont la valeur est NULL, le résultat de la concaténation est fonction des paramètres de la session.When you work with strings with a null value, the result of the concatenation depends on the session settings. De même que pour les opérations arithmétiques réalisées sur des valeurs NULL, l'ajout d'une valeur NULL à une valeur connue se solde généralement par une valeur inconnue. Une concaténation de chaînes effectuée avec une valeur NULL doit produire un résultat du même type.Just like arithmetic operations that are performed on null values, when a null value is added to a known value the result is typically an unknown value, a string concatenation operation that is performed with a null value should also produce a null result. Toutefois, vous pouvez modifier ce comportement en modifiant le paramètre de CONCAT_NULL_YIELDS_NULL pour la session active.However, you can change this behavior by changing the setting of CONCAT_NULL_YIELDS_NULL for the current session. Pour plus d’informations, consultez SET CONCAT_NULL_YIELDS_NULL (Transact-SQL).For more information, see SET CONCAT_NULL_YIELDS_NULL (Transact-SQL).

Si le résultat de la concaténation de chaînes dépasse la limite des 8 000 octets, il sera tronqué.If the result of the concatenation of strings exceeds the limit of 8,000 bytes, the result is truncated. Néanmoins, si au moins une des chaînes concaténées est de type valeur élevée, le résultat n'est pas tronqué.However, if at least one of the strings concatenated is a large value type, truncation does not occur.

ExemplesExamples

A.A. Utilisation de la concaténation de chaîneUsing string concatenation

L'exemple suivant crée une seule colonne sous l'en-tête Name à partir de plusieurs colonnes de caractères, avec le nom de famille de la personne suivi d'une virgule, d'un espace puis de son prénom.The following example creates a single column under the column heading Name from multiple character columns, with the last name of the person followed by a comma, a single space, and then the first name of the person. Le jeu de résultats est classé par ordre alphabétique croissant sur le nom de famille puis sur le prénom.The result set is in ascending, alphabetical order by the last name, and then by the first name.

-- Uses AdventureWorks  

SELECT (LastName + ', ' + FirstName) AS Name  
FROM Person.Person  
ORDER BY LastName ASC, FirstName ASC;  

B.B. Combinaison des types de données numérique et dateCombining numeric and date data types

L’exemple suivant utilise le CONVERT (fonction) pour concaténer numérique et date des types de données.The following example uses the CONVERT function to concatenate numeric and date data types.

-- Uses AdventureWorks  

SELECT 'The order is due on ' + CONVERT(varchar(12), DueDate, 101)  
FROM Sales.SalesOrderHeader  
WHERE SalesOrderID = 50001;  
GO  

Voici l'ensemble des résultats.Here is the result set.

------------------------------------------------  
The order is due on 04/23/2007  
(1 row(s) affected)

C.C. Utilisation de la concaténation de plusieurs chaînesUsing multiple string concatenation

L'exemple suivant concatène plusieurs chaînes pour constituer une chaîne longue et afficher le nom de famille et l'initiale des vice-présidents Adventure Works CyclesAdventure Works Cycles.The following example concatenates multiple strings to form one long string to display the last name and the first initial of the vice presidents at Adventure Works CyclesAdventure Works Cycles. Le nom de famille est suivi d'une virgule ; l'initiale est suivie d'un point.A comma is added after the last name and a period after the first initial.

-- Uses AdventureWorks  

SELECT (LastName + ',' + SPACE(1) + SUBSTRING(FirstName, 1, 1) + '.') AS Name, e.JobTitle  
FROM Person.Person AS p  
    JOIN HumanResources.Employee AS e  
    ON p.BusinessEntityID = e.BusinessEntityID  
WHERE e.JobTitle LIKE 'Vice%'  
ORDER BY LastName ASC;  
GO  

Voici l'ensemble des résultats.Here is the result set.

Name               Title  
-------------      ---------------`  
Duffy, T.          Vice President of Engineering  
Hamilton, J.       Vice President of Production  
Welcker, B.        Vice President of Sales  

(3 row(s) affected)

D.D. À l’aide de chaînes de grande taille dans la concaténationUsing large strings in concatenation

L’exemple suivant concatène plusieurs chaînes pour former une chaîne longue et tente ensuite de calculer la longueur de la chaîne finale.The following example concatenates multiple strings to form one long string and then tries to compute the length of the final string. La longueur finale du jeu de résultats est 16000, car l’expression d’évaluation commence gauche qui plus est, @x + @z + @y = > (@x + @z) + @y.The final length of resultset is 16000, because expression evaluation starts from left that is, @x + @z + @y => (@x + @z) + @y. Dans ce cas, le résultat de (@x + @z) est tronquée à 8 000 octets, puis @y est ajouté au jeu de résultats, ce qui rend la longueur de la chaîne finale 16000.In this case the result of (@x + @z) is truncated at 8000 bytes and then @y is added to the resultset, which makes the final string length 16000. Étant donné que @y est une chaîne de type de valeur élevée, la troncation n’a pas lieu.Since @y is a large value type string, truncation does not occur.

DECLARE @x varchar(8000) = replicate('x', 8000)
DECLARE @y varchar(max) = replicate('y', 8000)
DECLARE @z varchar(8000) = replicate('z',8000)
SET @y = @x + @z + @y
-- The result of following select is 16000
SELECT len(@y) AS y
GO

Voici l'ensemble des résultats.Here is the result set.

y        
-------  
16000  

(1 row(s) affected)

Exemples : Azure SQL Data WarehouseAzure SQL Data Warehouse et Parallel Data WarehouseParallel Data WarehouseExamples: Azure SQL Data WarehouseAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

E.E. Utilisation de la concaténation de plusieurs chaînesUsing multiple string concatenation

L’exemple suivant concatène plusieurs chaînes pour former une chaîne longue pour afficher le nom et l’initiale des vice-présidents au sein d’une base de données exemple.The following example concatenates multiple strings to form one long string to display the last name and the first initial of the vice presidents within a sample database. Le nom de famille est suivi d'une virgule ; l'initiale est suivie d'un point.A comma is added after the last name and a period after the first initial.

-- Uses AdventureWorks  

SELECT (LastName + ', ' + SUBSTRING(FirstName, 1, 1) + '.') AS Name, Title  
FROM DimEmployee  
WHERE Title LIKE '%Vice Pres%'  
ORDER BY LastName ASC;  

Voici l'ensemble des résultats.Here is the result set.

Name               Title                                           
-------------      ---------------  
Duffy, T.          Vice President of Engineering  
Hamilton, J.       Vice President of Production  
Welcker, B.        Vice President of Sales  

Voir aussiSee Also

+= ( Assignation de concaténation de chaîne ) ( Transact-SQL ) += (String Concatenation Assignment) (Transact-SQL)
ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
CAST et CONVERT (Transact-SQL) CAST and CONVERT (Transact-SQL)
Conversion de Type de données ( moteur de base de données ) Data Type Conversion (Database Engine)
Types de données (Transact-SQL) Data Types (Transact-SQL)
Expressions (Transact-SQL) Expressions (Transact-SQL)
Fonctions intégrées (Transact-SQL) Built-in Functions (Transact-SQL)
Operators (Transact-SQL) Operators (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
Instructions SET (Transact-SQL)SET Statements (Transact-SQL)