CONCAT (Transact-SQL)
Aplica-se a: SQL Server (todas as versões com suporte)
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
PDW (Analytics Platform System)
Essa função retorna uma cadeia de caracteres resultante de concatenação ou junção de dois ou mais valores de cadeia de caracteres de ponta a ponta. (Para adicionar um valor de separação durante a concatenação, consulte CONCAT_WS.)
Convenções de sintaxe de Transact-SQL
Sintaxe
CONCAT ( string_value1, string_value2 [, string_valueN ] )
Observação
Para ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, confira a Documentação das versões anteriores.
Argumentos
string_value
Um valor de cadeia de caracteres para concatenação com outros valores. A função CONCAT
requer pelo menos dois argumentos string_value e não mais do que 254 argumentos string_value.
Tipos de retorno
string_value
Um valor de cadeia de caracteres cujos comprimento e tipo dependem da entrada.
Comentários
CONCAT
usa um número variável de argumentos de cadeia de caracteres e os concatena em uma única cadeia de caracteres. Exige um mínimo de dois valores de entrada; caso contrário, CONCAT
gerará um erro. CONCAT
converte implicitamente todos os argumentos nos tipos de cadeia de caracteres antes da concatenação. CONCAT
converte implicitamente os valores nulos em cadeias de caracteres vazias. Se CONCAT
receber argumentos com todos os valores nulo, retornará uma cadeia de caracteres vazia do tipo varchar(1). A conversão implícita em cadeias de caracteres segue as regras existentes para conversões de tipo de dados. Confira CAST e CONVERT (Transact-SQL) para obter mais informações sobre conversões de tipo de dados.
O tipo de retorno depende do tipo dos argumentos. Esta tabela ilustra o mapeamento:
Tipo de entrada | Tipo e comprimento da saída |
---|---|
1. Qualquer argumento de um tipo de sistema do SQL-CLR a UDT SQL-CLR ou nvarchar(max) |
nvarchar(max) |
2. Caso contrário, qualquer argumento de tipo varbinary(max) ou varchar(max) |
varchar(max), a menos que um dos parâmetros seja um nvarchar de qualquer comprimento. Nesse caso, CONCAT retorna um resultado do tipo nvarchar(max). |
3. Caso contrário, qualquer argumento de tipo nvarchar de no máximo 4.000 caracteres ( nvarchar(<= 4000) ) |
nvarchar(<= 4000) |
4. Em todos os outros casos | varchar(<= 8000) (a varchar de no máximo 8 mil caracteres), a menos que um dos parâmetros seja um nvarchar de qualquer comprimento. Naquele caso, CONCAT retorna um resultado do tipo nvarchar(max). |
Quando CONCAT
recebe argumentos de entrada nvarchar de comprimento <=4000 caracteres, ou argumentos de entrada varchar de comprimento <=8000 caracteres, conversões implícitas poderão afetar o comprimento das resultado. Outros tipos de dados têm comprimentos diferentes quando são convertidos implicitamente em cadeias de caracteres. Por exemplo, um int (14) tem um comprimento de cadeia de caracteres de 12, enquanto um float tem um comprimento de 32. Portanto, uma concatenação de dois inteiros retornará um resultado com um comprimento não inferior a 24.
Se nenhum dos argumentos de entrada tiver um tipo LOB (objeto grande) com suporte, o tipo retornado será truncado para 8.000 caracteres, independentemente do tipo retornado. Esse truncamento preserva espaço e dá suporte à eficiência na geração do plano.
A função CONCAT pode ser executada remotamente em um servidor vinculado da versão SQL Server 2012 (11.x) e superiores. Para servidores vinculados mais antigos, a operação CONCAT ocorrerá localmente, depois que o servidor vinculado retornar os valores não concatenados.
Exemplos
a. Usando CONCAT
SELECT CONCAT ( 'Happy ', 'Birthday ', 11, '/', '25' ) AS Result;
Este é o conjunto de resultados.
Result
-------------------------
Happy Birthday 11/25
(1 row(s) affected)
B. Usando CONCAT com valores 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;
Este é o conjunto de resultados.
Result
------------------
NameLastname
(1 row(s) affected)
Confira também
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)
Funções de cadeia de caracteres (Transact-SQL)