CONCAT (Transact-SQL)
Viene restituita la stringa risultante dalla concatenazione di due o più valori stringa.
Convenzioni della sintassi Transact-SQL
Sintassi
CONCAT ( string_value1, string_value2 [, string_valueN ] )
Argomenti
- string_value
Valore stringa da concatenare agli altri valori.
Tipi restituiti
Stringa, lunghezza e tipo di cui dipende l'input.
Osservazioni
CONCAT consente di accettare un numero variabile di argomenti di tipo stringa e di concatenarli in una singola stringa. È richiesto un minimo di due valori di input. In caso contrario, viene generato un errore. Tutti gli argomenti vengono convertiti in modo implicito nei tipi di stringa e successivamente concatenati. I valori Null vengono convertiti in modo implicito in una stringa vuota. Se tutti gli argomenti sono Null, viene restituita una stringa vuota di tipo varchar(1). Per la conversione implicita in stringhe vengono seguite le regole esistenti per le conversioni dei tipi di dati. Per ulteriori informazioni sulle conversioni dei tipi di dati, vedere CAST e CONVERT (Transact-SQL).
Il tipo restituito dipende dal tipo degli argomenti. Nella tabella seguente viene illustrato il mapping.
Tipo di input |
Tipo di output e lunghezza |
---|---|
Se un argomento è un tipo di sistema CLR SQL, un tipo definito dall'utente CLR SQL o nvarchar(max) |
nvarchar(max) |
In caso contrario, se un argomento è di tipo varbinary(max) o varchar(max) |
varchar(max) a meno che uno dei parametri non sia di tipo nvarchar di qualsiasi lunghezza. In questo caso, il risultato è nvarchar(max). |
In caso contrario, se un argomento è di tipo nvarchar(<= 4000) |
nvarchar(<= 4000) |
In caso contrario, in tutti gli altri casi |
varchar(<= 8000) a meno che uno dei parametri non sia un tipo nvarchar di qualsiasi lunghezza. In questo caso, il risultato è nvarchar(max). |
Quando gli argomenti sono <= 4000 per nvarchar o <= 8000 per varchar, le conversioni implicite possono influire sulla lunghezza del risultato. Gli altri tipi di dati hanno lunghezze diverse quando vengono convertiti in modo implicito in stringhe. A un tipo int (14), ad esempio, corrisponde una lunghezza di stringa pari a 12, mentre a un tipo float è associata una lunghezza pari a 32. Di conseguenza, al risultato della concatenazione di due tipi Integer corrisponde una lunghezza non minore di 24.
Se nessuno degli argomenti di input è di un tipo LOB supportato, la lunghezza del tipo restituito viene troncata a 8000, indipendentemente dal tipo restituito. Questo troncamento consente di mantenere lo spazio e di generare il piano in modo efficiente.
Questa funzione può essere eseguita in modalità remota in server con SQL Server 2012 e versioni successive, ma non in server con versioni precedenti a SQL Server 2012.
Esempi
A.Utilizzo di CONCAT
SELECT CONCAT ( 'Happy ', 'Birthday ', 11, '/', '25' ) AS Result;
Set di risultati:
Result
-------------------------
Happy Birthday 11/25
(1 row(s) affected)
B.Utilizzo di CONCAT con valori 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;
Set di risultati:
Result
------------------
NameLastname
(1 row(s) affected)