CONCAT (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
Cette fonction retourne une chaîne qui résulte de la concaténation ou de la jointure de deux valeurs de chaîne ou plus, de bout en bout.
Remarque
Pour ajouter une valeur de séparation durant la concaténation, consultez CONCAT_WS.
Conventions de la syntaxe Transact-SQL
Syntaxe
CONCAT ( argument1 , argument2 [ , argumentN ] ... )
Arguments
argument1, argument2 [ , argumentN ]
Une expression de n’importe quelle valeur de chaîne. La fonction CONCAT
nécessite au moins deux arguments et pas plus de 254 arguments.
Types de retour
Valeur de chaîne dont la longueur et le type dépendent de l’entrée.
Notes
CONCAT
accepte un nombre variable d’arguments de chaîne et les concatène (ou les joint) en une seule chaîne. Elle nécessite un minimum de deux valeurs d’entrée ; sinon, CONCAT
génère une erreur. CONCAT
convertit implicitement tous les arguments en types chaîne avant la concaténation. CONCAT
Convertit implicitement les valeurs null en chaînes vides. Si CONCAT
reçoit des arguments dont toutes les valeurs NULL
, elle retourne une chaîne vide de type varchar(1). La conversion implicite en chaînes respecte les règles existantes de conversion de type de données. Pour plus d’informations sur les conversions de type de données, consultez CAST et CONVERT (Transact-SQL).
Le type de retour dépend du type des arguments. Ce tableau illustre le mappage :
Type d’entrée | Type de sortie et longueur |
---|---|
1. Tout argument d’un type de système SQL-CLR, un UDT SQL-CLR ou nvarchar(max) | nvarchar(max) |
2. Sinon, si un argument est de type varbinary(max) ou varchar(max) | varchar(max) , à moins qu’un des paramètres soit de type nvarchar d’une longueur quelconque. Dans ce cas, CONCAT retourne un résultat de type nvarchar(max). |
3. Sinon, n’importe quel argument de type nvarchar d’un maximum de 4 000 caractères (nvarchar(<= 4000)) | nvarchar(<= 4000) |
4. Dans tous les autres cas | tout argument de type varchar allant jusqu’à 8 000 caractères (varchar(<= 8000)), sauf si l’un des paramètres est un nvarchar de n’importe quelle longueur. Dans ce cas, CONCAT retourne un résultat de type nvarchar(max). |
Quand CONCAT
reçoit des arguments d’entrée nvarchar d’une longueur <= 4000 caractères ou des arguments d’entrée varchar d’une longueur <= 8000 caractères, les conversions implicites peuvent affecter la longueur du résultat. Les autres types de données ont des longueurs différentes quand ils sont convertis implicitement en chaînes. Par exemple, une int avec une valeur 14
a une longueur de chaîne de 2, alors qu’une flotte avec la valeur 1234.56789
a une longueur de chaîne de 7 (1234.57
). Par conséquent, une concaténation de deux valeurs retourne un résultat d’une longueur pas moins de 9 caractères.
Si aucun des arguments d’entrée n’a un type de Large objet (LOB) pris en charge, le type de retour tronque 8 000 caractères en longueur, quel que soit le type de retour. Cette troncation préserve les espaces et prend en charge l’efficacité de la génération du plan.
CONCAT
peut être exécuté à distance sur un serveur lié exécutant SQL Server 2012 (11.x) et versions ultérieures. Pour les serveurs liés plus anciens, l’opération CONCAT
est exécutée localement quand le serveur lié a retourné les valeurs non concaténées.
Exemples
R. Utilisez CONCAT
SELECT CONCAT ('Happy ', 'Birthday ', 11, '/', '25') AS Result;
Voici le jeu de résultats.
Result
--------------------
Happy Birthday 11/25
B. Utilisation de CONCAT avec des valeurs NULL
CREATE TABLE #temp (
emp_name NVARCHAR(200) NOT NULL,
emp_middlename NVARCHAR(200) NULL,
emp_lastname NVARCHAR(200) NOT NULL
);
INSERT INTO #temp
VALUES ('Name', NULL, 'Lastname');
SELECT CONCAT (emp_name, emp_middlename, emp_lastname) AS Result
FROM #temp;
Voici le jeu de résultats.
Result
------------
NameLastname