CONCAT (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure sìAzure Synapse Analytics sìParallel Data Warehouse

Questa funzione restituisce una stringa risultante dalla concatenazione o unione in join end-to-end di due o più valori di stringa. Per l'aggiunta di un valore di separazione durante la concatenazione, vedere CONCAT_WS.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

CONCAT ( string_value1, string_value2 [, string_valueN ] )  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.

Argomenti

string_value
Valore stringa da concatenare agli altri valori. La funzione CONCAT richiede almeno due, ma non più di 254, argomenti string_value.

Tipi restituiti

string_value
Valore stringa la cui lunghezza e tipo dipendono dall'input.

Osservazioni

CONCAT accetta un numero variabile di argomenti stringa e li concatena in una singola stringa. Richiede un minimo di due valori di input. In caso contrario, CONCAT genera un errore. CONCAT converte in modo implicito tutti gli argomenti nei tipi di stringa prima della concatenazione. CONCAT converte in modo implicito i valori Null in stringhe vuote. Se CONCAT riceve argomenti con tutti i valori NULL, restituisce 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 altre 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
1. Qualsiasi argomento di

un tipo di sistema CLR SQL

un UDT CLR SQL

o

nvarchar(max)
nvarchar(max)
2. In alternativa, qualsiasi argomento di tipo

varbinary(max)

o

ntext
varchar(max) , a meno che uno dei parametri non sia un tipo nvarchar di qualsiasi lunghezza. In questo caso CONCAT restituisce un risultato di tipo nvarchar(max).
3. In alternativa, qualsiasi argomento di tipo nvarchar di 4000 caratteri al massimo

( nvarchar(<= 4000) )
nvarchar(<= 4000)
4. In tutti gli altri casi varchar(<= 8000) (un elemento varchar di 8000 caratteri al massimo), a meno che uno dei parametri non sia un tipo nvarchar di qualsiasi lunghezza. In questo caso, CONCAT restituisce un risultato di tipo nvarchar(max).

Quando CONCAT riceve argomenti di input nvarchar di lunghezza < = 4000 caratteri, o argomenti di input varchar di lunghezza < = 8000 caratteri, 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. Ad esempio un tipo int (14) ha una lunghezza stringa 12, mentre un tipo float ha una lunghezza stringa 32. Pertanto, una concatenazione di due interi restituisce un risultato con una lunghezza non inferiore a 24.

Se nessuno degli argomenti di input è di un tipo LOB supportato, la lunghezza del tipo restituito viene troncata a 8000 caratteri, indipendentemente dal tipo restituito. Questo troncamento consente di risparmiare spazio e di generare il piano in modo efficiente.

La funzione CONCAT può essere eseguita in modalità remota su un server collegato versione SQL Server 2012 (11.x) e successive. Per i server collegati precedenti, CONCAT viene eseguita in locale dopo che il server collegato restituisce i valori non concatenati.

Esempi

R. Utilizzo di CONCAT

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

Questo è il 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;  

Questo è il set di risultati.

Result  
------------------  
NameLastname  
  
(1 row(s) affected)  

Vedere anche

CONCAT_WS (Transact-SQL)
FORMATMESSAGE (Transact-SQL)
QUOTENAME (Transact-SQL)
REPLACE (Transact-SQL)
REVERSE (Transact-SQL)
STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)
STUFF (Transact-SQL)
TRANSLATE (Transact-SQL)
Funzioni per i valori stringa (Transact-SQL)