+ (concaténation de chaînes) (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric
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). L’exemple SELECT 'book'+'case';
retourne bookcase
.
Conventions de la syntaxe Transact-SQL
Syntaxe
expression + expression
Arguments
expression
Toute expression valide d’un des types de données dans la catégorie de type de données caractères et binaires, à l’exception de l’image, du ntext ou des types de données texte. 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.
Types de retour
Retourne le type de données de l'argument dont la priorité est la plus élevée. Pour plus d’informations, consultez Priorité du type de données.
Notes
Si le résultat de la concaténation de chaînes dépasse la limite des 8 000 octets, il sera tronqué. Toutefois, si au moins une des chaînes concaténées est un type de valeur volumineux, la troncation ne se produit pas.
Chaînes et caractères de longueur zéro
L’opérateur +
de concaténation de chaîne se comporte différemment lorsqu’il fonctionne avec une chaîne vide et de longueur nulle que lorsqu’il fonctionne avec NULL
des valeurs inconnues ou non. Une chaîne de caractères de longueur nulle peut être spécifiée par deux guillemets simples sans caractères à l'intérieur. Une chaîne binaire de longueur nulle peut être spécifiée comme 0x
sans aucune valeur d’octet spécifiée dans la constante hexadécimale. La concaténation d'une chaîne de longueur nulle concatène toujours deux chaînes spécifiées.
Concaténation des valeurs NULL
Lorsque vous utilisez des chaînes avec une NULL
valeur, le résultat de la concaténation dépend des paramètres de session. Comme pour les opérations arithmétiques effectuées sur NULL
les valeurs, lorsqu’une NULL
valeur est ajoutée à une valeur connue, le résultat est généralement une valeur inconnue, une opération de concaténation de chaîne effectuée avec une NULL
valeur, doit également produire un NULL
résultat.
Vous pouvez toutefois modifier ce comportement en changeant le paramètre de CONCAT_NULL_YIELDS_NULL
pour la session actuelle. Pour plus d’informations, voir SET CONCAT_NULL_YIELDS_NULL.
Utilisation de CAST et CONVERT si nécessaire
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.
Les exemples suivants montrent quand CONVERT
, ou CAST
, doit être utilisé avec la concaténation binaire et quand CONVERT
, ou CAST
, n’a pas besoin d’être utilisé.
Dans cet exemple, aucune ou CAST
fonction n’est CONVERT
requise, car cet exemple concatène deux chaînes binaires.
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;
Dans cet exemple, une ou CAST
une CONVERT
fonction est requise, car cet exemple concatène deux chaînes binaires plus un espace.
DECLARE @mybin1 VARBINARY(5), @mybin2 VARBINARY(5);
SET @mybin1 = 0xFF;
SET @mybin2 = 0xA5;
-- 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));
Exemples
Les exemples de code Transact-SQL de cet article sont fondés sur l’échantillon de base de données AdventureWorks2022
ou AdventureWorksDW2022
fourni, que vous pouvez télécharger à partir de la page d’accueil Échantillons et projets communautaires Microsoft SQL Server.
R : Utiliser la concaténation de chaînes
L’exemple suivant crée une seule colonne sous l’en-tête Name
de colonne à partir de plusieurs colonnes de caractères, avec le nom de famille de la personne suivie d’une virgule, d’un espace unique, puis du prénom de la personne. Le jeu de résultats se trouve dans l’ordre croissant, alphabétique par le nom de la famille, puis par le prénom.
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;
B. Combiner des types de données numériques et de date
L’exemple suivant utilise la fonction CONVERT
pour concaténer des types de données numeric et date.
SELECT 'The order is due on ' + CONVERT(VARCHAR(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO
Voici le jeu de résultats.
------------------------------------------------
The order is due on 04/23/2007
C. Utiliser plusieurs concaténations de chaînes
L’exemple suivant concatène plusieurs chaînes pour former une chaîne longue pour afficher le nom de la famille et le premier initial des vice-présidents à Adventure Works Cycles. Une virgule est ajoutée après le nom de la famille et un point après le premier initial.
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 le jeu de résultats.
Name Title
------------- ---------------`
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
D. Utiliser des chaînes volumineuses en concaténation
L’exemple suivant concatène plusieurs chaînes pour former une seule et même longue chaîne, puis essaie de calculer la longueur de la chaîne finale. La longueur finale du jeu de résultats est de 16 000, car l’évaluation de l’expression commence à partir de gauche, c’est-à-dire @x
@y
+ @z
+ => (@x + @z
) + . @y
Dans ce cas, le résultat de (@x
+ @z
) est tronqué à 8 000 octets, puis @y
est ajouté au jeu de résultats, ce qui rend la longueur de chaîne finale 16 000. Étant donné qu’il @y
s’agit d’une chaîne de type valeur importante, la troncation ne se produit pas.
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 le jeu de résultats.
y
-------
16000
Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)
Les exemples de code Transact-SQL de cet article sont fondés sur l’échantillon de base de données AdventureWorks2022
ou AdventureWorksDW2022
fourni, que vous pouvez télécharger à partir de la page d’accueil Échantillons et projets communautaires Microsoft SQL Server.
E. Utiliser plusieurs concaténations de chaînes
L’exemple suivant concatène plusieurs chaînes pour former une chaîne longue pour afficher le nom de la famille et le premier initial des vice-présidents dans un exemple de base de données. Une virgule est ajoutée après le nom de la famille et un point après le premier initial.
SELECT (LastName + ', ' + SUBSTRING(FirstName, 1, 1) + '.') AS Name, Title
FROM DimEmployee
WHERE Title LIKE '%Vice Pres%'
ORDER BY LastName ASC;
Voici le jeu de résultats.
Name Title
------------- ---------------
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
Contenu connexe
- || (Concaténation de chaînes) (Transact-SQL)
- += (Affectation après concaténation de chaînes) (Transact-SQL)
- ALTER DATABASE (Transact-SQL)
- CAST et CONVERT (Transact-SQL)
- Conversion de types de données (Moteur de base de données)
- Types de données (Transact-SQL)
- Expressions (Transact-SQL)
- Fonctions intégrées (Transact-SQL)
- Opérateurs (Transact-SQL)
- SELECT (Transact-SQL)
- Instructions SET (Transact-SQL)