CONCAT (Transact-SQL)CONCAT (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simAzure Synapse Analytics (SQL DW) simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

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.This function returns a string resulting from the concatenation, or joining, of two or more string values in an end-to-end manner. (Para adicionar um valor de separação durante a concatenação, consulte CONCAT_WS.)(To add a separating value during concatenation, see CONCAT_WS.)

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

CONCAT ( string_value1, string_value2 [, string_valueN ] )  

ArgumentosArguments

string_valuestring_value
Um valor de cadeia de caracteres para concatenação com outros valores.A string value to concatenate to the other values. A função CONCAT requer pelo menos dois argumentos string_value e não mais do que 254 argumentos string_value.The CONCAT function requires at least two string_value arguments, and no more than 254 string_value arguments.

Tipos de retornoReturn types

string_valuestring_value
Um valor de cadeia de caracteres cujos comprimento e tipo dependem da entrada.A string value whose length and type depend on the input.

RemarksRemarks

CONCAT usa um número variável de argumentos de cadeia de caracteres e os concatena em uma única cadeia de caracteres.CONCAT takes a variable number of string arguments and concatenates (or joins) them into a single string. Exige um mínimo de dois valores de entrada; caso contrário, CONCAT gerará um erro.It requires a minimum of two input values; otherwise, CONCAT will raise an error. CONCAT converte implicitamente todos os argumentos nos tipos de cadeia de caracteres antes da concatenação.CONCAT implicitly converts all arguments to string types before concatenation. CONCAT converte implicitamente os valores nulos em cadeias de caracteres vazias.CONCAT implicitly converts null values to empty strings. Se CONCAT receber argumentos com todos os valores nulo, retornará uma cadeia de caracteres vazia do tipo varchar(1).If CONCAT receives arguments with all NULL values, it will return an empty string of type varchar(1). A conversão implícita em cadeias de caracteres segue as regras existentes para conversões de tipo de dados.The implicit conversion to strings follows the existing rules for data type conversions. Veja CAST e CONVERT (Transact-SQL) para obter mais informações sobre conversões de tipo de dados.See CAST and CONVERT (Transact-SQL) for more information about data type conversions.

O tipo de retorno depende do tipo dos argumentos.The return type depends on the type of the arguments. Esta tabela ilustra o mapeamento:This table illustrates the mapping:

Tipo de entradaInput type Tipo e comprimento da saídaOutput type and length
1. Qualquer argumento de1. Any argument of

um tipo de sistema do SQL-CLRa SQL-CLR system type

a UDT SQL-CLRa SQL-CLR UDT

ou emor

nvarchar(max)
nvarchar(max)nvarchar(max)
2. Caso contrário, qualquer argumento de tipo2. Otherwise, any argument of type

varbinary(max)varbinary(max)

ou emor

varchar(max)varchar(max)
varchar(max) , a menos que um dos parâmetros seja um nvarchar de qualquer comprimento.varchar(max), unless one of the parameters is an nvarchar of any length. Nesse caso, CONCAT retorna um resultado do tipo nvarchar(max) .In this case, CONCAT returns a result of type nvarchar(max).
3. Caso contrário, qualquer argumento de tipo nvarchar de no máximo 4.000 caracteres3. Otherwise, any argument of type nvarchar of at most 4000 characters

( nvarchar(<= 4000) )( nvarchar(<= 4000) )
nvarchar(<= 4000)nvarchar(<= 4000)
4. Em todos os outros casos4. In all other cases varchar(<=8.000) (um varchar de no máximo 8.000 caracteres), a menos que um dos parâmetros seja um nvarchar de qualquer comprimento.varchar(<= 8000) (a varchar of at most 8000 characters) unless one of the parameters is an nvarchar of any length. Naquele caso, CONCAT retorna um resultado do tipo nvarchar(max) .In that case, CONCAT returns a result of type nvarchar(max).

Quando CONCAT recebe argumentos de entrada nvarchar de comprimento <=4.000 caracteres, ou argumentos de entrada varchar de comprimento <=8.000 caracteres, conversões implícitas poderão afetar o comprimento das resultado.When CONCAT receives nvarchar input arguments of length <= 4000 characters, or varchar input arguments of length <= 8000 characters, implicit conversions can affect the length of the result. Outros tipos de dados têm comprimentos diferentes quando são convertidos implicitamente em cadeias de caracteres.Other data types have different lengths when implicitly converted to strings. Por exemplo, um int (14) tem um comprimento de cadeia de caracteres de 12, enquanto um float tem um comprimento de 32.For example, an int (14) has a string length of 12, while a float has a length of 32. Portanto, uma concatenação de dois inteiros retornará um resultado com um comprimento não inferior a 24.Therefore, a concatenation of two integers returns a result with a length of no less than 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.If none of the input arguments has a supported large object (LOB) type, then the return type truncates to 8000 characters in length, regardless of the return type. Esse truncamento preserva espaço e dá suporte à eficiência na geração do plano.This truncation preserves space and supports plan generation efficiency.

A função CONCAT pode ser executada remotamente em um servidor vinculado da versão SQL Server 2012 (11.x)SQL Server 2012 (11.x) e superiores.The CONCAT function can be executed remotely on a linked server of version SQL Server 2012 (11.x)SQL Server 2012 (11.x) and above. Para servidores vinculados mais antigos, a operação CONCAT ocorrerá localmente, depois que o servidor vinculado retornar os valores não concatenados.For older linked servers, the CONCAT operation will happen locally, after the linked server returns the non-concatenated values.

ExemplosExamples

A.A. Usando CONCATUsing CONCAT

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

Este é o conjunto de resultados.Here is the result set.

Result  
-------------------------  
Happy Birthday 11/25  
  
(1 row(s) affected)  

B.B. Usando CONCAT com valores NULLUsing CONCAT with NULL values

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.Here is the result set.

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

Confira tambémSee also

CONCAT_WS (Transact-SQL) CONCAT_WS (Transact-SQL)
FORMATMESSAGE (Transact-SQL)FORMATMESSAGE (Transact-SQL)
QUOTENAME (Transact-SQL)QUOTENAME (Transact-SQL)
REPLACE (Transact-SQL)REPLACE (Transact-SQL)
REVERSE (Transact-SQL)REVERSE (Transact-SQL)
STRING_AGG (Transact-SQL)STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)STRING_ESCAPE (Transact-SQL)
STUFF (Transact-SQL)STUFF (Transact-SQL)
TRANSLATE (Transact-SQL)TRANSLATE (Transact-SQL)
Funções de cadeia de caracteres (Transact-SQL)String Functions (Transact-SQL)