CONCAT (Transact-SQL)

Retorna uma cadeia de caracteres que é o resultado da concatenação de dois ou mais valores.

Ícone de vínculo de tópico Convenções de sintaxe Transact-SQL

Sintaxe

CONCAT ( string_value1, string_value2 [, string_valueN ] )

Argumentos

  • string_value
    Um valor de cadeia de caracteres para concatenação com outros valores.

Tipos de retorno

Cadeia de caracteres, comprimento e tipo dos quais a entrada depende.

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, é gerado um erro. Todos os argumentos são convertidos implicitamente em tipos de cadeia de caracteres e depois concatenados. Os valores nulos são convertidos implicitamente em uma cadeia de caracteres vazia. Se todos os argumentos forem nulos, uma cadeia de caracteres vazia do tipo varchar(1) será retornada. A conversão implícita em cadeias de caracteres segue as regras existentes para conversões de tipo de dados. Para obter mais informações sobre conversões de tipos de dados, consulte CAST e CONVERT (Transact-SQL).

O tipo de retorno depende do tipo dos argumentos. A tabela a seguir ilustra o mapeamento.

Tipo de entrada

Tipo e comprimento da saída

Se qualquer argumento for um tipo do sistema SQL-CLR, um SQL-CLR UDT ou um nvarchar(max)

nvarchar(max)

Caso contrário, se qualquer argumento for varbinary(max) ou varchar(max)

varchar(max) a menos que um dos parâmetros seja um nvarchar de qualquer comprimento. Nesse caso, o resultado será nvarchar(max).

Caso contrário, se qualquer argumento for nvarchar(<= 4000)

nvarchar(<= 4000)

Caso contrário, em todos os outros casos

varchar(<= 8000)a menos que um dos parâmetros seja um nvarchar de qualquer comprimento. Nesse caso, o resultado será nvarchar(max).

Quando os argumentos forem <= 4000 para nvarchar, ou <= 8000 para varchar, as conversões implícitas poderão afetar o comprimento do resultado. Outros tipos de dados têm comprimentos diferentes quando eles 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, o resultado da concatenação de dois inteiros tem um comprimento não menor que 24.

Se nenhum dos argumentos de entrada for de um tipo LOB (large object, objeto grande) com suporte, o tipo de retorno será truncado para 8000 de comprimento, independentemente do tipo de retorno. Esse truncamento preserva espaço e dá suporte à eficiência na geração do plano.

Essa função é capaz de ser remota para servidores do SQL Server 2012 e acima. Ela não será remota para servidores que têm uma versão anterior ao SQL Server 2012.

Exemplos

A.Usando CONCAT

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

Aqui está 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;

Aqui está o conjunto de resultados.

Result
------------------
NameLastname

(1 row(s) affected)