CONCAT (Transact-SQL)

Retourne une chaîne qui est le résultat de la concaténation de plusieurs valeurs de chaîne.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

CONCAT ( string_value1, string_value2 [, string_valueN ] )

Arguments

  • string_value
    Valeur de chaîne à concaténer aux autres valeurs.

Types de retour

Chaîne, dont la longueur et le type dépendent de l'entrée.

Notes

CONCAT prend un nombre variable d'arguments de chaîne et les concatène en une chaîne unique. Elle nécessite un minimum de deux valeurs d'entrée ; sinon, une erreur est générée. Tous les arguments sont implicitement convertis en types chaîne et ensuite concaténés. Les valeurs NULL sont implicitement converties en chaîne vide. Si tous les arguments sont NULL, une chaîne vide de type varchar(1) est retournée. 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. Le tableau ci-dessous illustre le mappage.

Type d'entrée

Type de sortie et longueur

Si un argument est un type système SQL-CLR, un type défini par l'utilisateur SQL-CLR ou nvarchar(max)

nvarchar(max)

Sinon, si un argument est de type varbinary(max) ou varchar(max)

varchar(max) sauf si un des paramètres est de type nvarchar d'une longueur quelconque. Dans ce cas, le résultat est de type nvarchar(max).

Sinon, si un argument est de type nvarchar(<= 4000)

nvarchar(<= 4000)

Sinon, dans tous les autres cas

varchar(<= 8000) sauf si un des paramètres est de type nvarchar d'une longueur quelconque. Dans ce cas, le résultat est de type nvarchar(max).

Lorsque les arguments sont <= 4000 pour nvarchar, ou <= 8000 pour varchar, les conversions implicites peuvent affecter la longueur du résultat. D'autres types de données ont différentes longueurs lorsqu'ils sont implicitement convertis en chaînes. Par exemple, une valeur int (14) a une longueur de chaîne de 12, alors qu'une valeur float a une longueur de 32. Par conséquent, le résultat de la concaténation de deux entiers a une longueur non inférieure à 24.

Si aucun des arguments d'entrée n'est d'un type d'objet (LOB) pris en charge, le type de retour est tronqué à une longueur de 8000, quel que soit le type de retour. Cette troncation préserve l'espace et prend en charge l'efficacité de la génération du plan.

Cette fonction peut être exécutée à distance sur des serveurs SQL Server 2012 et versions ultérieures. Elle ne peut pas être exécutée à distance sur des serveurs dont la version est antérieure à SQL Server 2012.

Exemples

A.Utilisation de CONCAT

SELECT CONCAT ( 'Happy ', 'Birthday ', 11, '/', '25' ) AS Result;

Voici l'ensemble des résultats.

Result
-------------------------
Happy Birthday 11/25

(1 row(s) affected)

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 l'ensemble des résultats.

Result
------------------
NameLastname

(1 row(s) affected)