CONCAT (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (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)