Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de Dados SQL no Microsoft Fabric
Essa função retorna uma cadeia de caracteres resultante da concatenação, ou junção, de dois ou mais valores de cadeia de caracteres de maneira de ponta a ponta.
Observação
Para adicionar um valor separado durante a concatenação, use CONCAT_WS.
Transact-SQL convenções de sintaxe
Sintaxe
CONCAT ( argument1 , argument2 [ , argumentN ] ... )
Arguments
argumento1, argument2 [ , argumentN ]
Uma expressão de qualquer valor de cadeia de caracteres. A função CONCAT requer pelo menos dois argumentos, e não mais de 254 argumentos.
Tipos de devolução
Um valor de cadeia de caracteres cujo comprimento e tipo dependem da entrada.
Observações
CONCAT usa um número variável de argumentos de cadeia de caracteres e os concatena (ou une) em uma única cadeia de caracteres. Requer um mínimo de dois valores de entrada; caso contrário, CONCAT gera um erro.
CONCAT converte implicitamente todos os argumentos em tipos de cadeia de caracteres antes da concatenação.
CONCAT converte implicitamente valores nulos em cadeias vazias. Se CONCAT receber argumentos com todos os valores NULL, ele 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. Para 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. Esta tabela ilustra o mapeamento:
| Tipo de entrada | Tipo de saída e comprimento |
|---|---|
| 1. Qualquer argumento de um tipo de sistema SQL-CLR, um SQL-CLR UDT ou nvarchar(max) | nvarchar(max) |
| 2. Caso contrário, qualquer argumento do tipo varbinary(max) ou varchar(max) |
varchar(max), a menos que um dos parâmetros seja um nvarchar de qualquer comprimento. Neste caso, CONCAT devolve um resultado do tipo nvarchar(max). |
| 3. Caso contrário, qualquer argumento do tipo nvarchar de até 4000 caracteres (nvarchar(<= 4000)) | nvarchar(<= 4000) |
| 4. Em todos os outros casos | qualquer argumento do tipo varchar de até 8000 caracteres (varchar(<= 8000)), a menos que um dos parâmetros seja um nvarchar de qualquer comprimento. Nesse 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, as conversões implícitas podem afetar o comprimento do resultado. Outros tipos de dados têm comprimentos diferentes quando convertidos implicitamente em cadeias. Por exemplo, um int com valor 14 tem um comprimento de cadeia 2, enquanto um float com valor 1234.56789 tem comprimento de cadeia 7 (1234.57). Portanto, uma concatenação destes dois valores devolve um resultado com um comprimento não inferior a 9 caracteres.
Se nenhum dos argumentos de entrada tiver um tipo de objeto grande (LOB) suportado, então o tipo de retorno trunca para 8.000 caracteres de comprimento, independentemente do tipo de retorno. Este truncamento preserva o espaço e apoia a eficiência na geração de planos.
CONCAT pode ser executado remotamente num servidor ligado a correr SQL Server 2012 (11.x) e versões posteriores. Para servidores ligados mais antigos, a CONCAT operação ocorre localmente, depois de o servidor ligado devolver os valores não concatenados.
Examples
A. Usar o CONCAT
SELECT CONCAT ('Happy ', 'Birthday ', 11, '/', '25') AS Result;
Aqui está o conjunto de resultados.
Result
--------------------
Happy Birthday 11/25
B. Usar 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