+ (Concatenação de cadeias de caracteres) (Transact-SQL)

Um operador em uma expressão de cadeia de caracteres que concatena duas ou mais cadeias de caracteres ou binárias, colunas ou uma combinação de cadeias de cadeias de caracteres e nomes de colunas em uma expressão (um operador de cadeia de caracteres).

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

Sintaxe

expression + expression

Argumentos

  • expression
    É qualquer expressão válida de qualquer um dos tipos da categoria de tipo de dados caractere e binário, exceto os tipos de dados image, ntext ou text. Ambas as expressões devem ser do mesmo tipo de dados ou uma expressão deve poder ser convertida implicitamente no tipo de dados da outra expressão.

    Uma conversão explícita em dados de caractere deve ser usada ao concatenar cadeias binárias e quaisquer caracteres entre as cadeias binárias. O exemplo a seguir mostra quando CONVERT ou CAST devem ser usados com concatenação binária e quando CONVERT ou CAST não precisam ser usados.

    DECLARE @mybin1 varbinary(5), @mybin2 varbinary(5)
    SET @mybin1 = 0xFF
    SET @mybin2 = 0xA5
    -- No CONVERT or CAST function is required because this example 
    -- concatenates two binary strings.
    SELECT @mybin1 + @mybin2
    -- A CONVERT or CAST function is required because this example
    -- concatenates two binary strings plus a space.
    SELECT CONVERT(varchar(5), @mybin1) + ' ' 
       + CONVERT(varchar(5), @mybin2)
    -- Here is the same conversion using CAST.
    SELECT CAST(@mybin1 AS varchar(5)) + ' ' 
       + CAST(@mybin2 AS varchar(5))
    

Tipos de resultado

Retorna o tipo de dados do argumento com a precedência mais alta. Para obter mais informações, consulte Precedência de tipo de dados (Transact-SQL).

Comentários

O operador + (Concatenação de cadeias de caracteres) se comporta de maneira diferente ao trabalhar com uma cadeia de caracteres vazia de comprimento zero do que ao trabalhar com valores NULL ou desconhecidos. Uma cadeia de caracteres de comprimento zero pode ser especificada como duas aspas simples sem nenhum caractere dentro das aspas. Uma cadeia de caracteres binária de comprimento zero pode ser especificada como 0x sem nenhum valor de byte especificado na constante hexadecimal. A concatenação de uma cadeia de caracteres de comprimento zero sempre concatena as duas cadeias de caracteres especificadas. Quando você trabalhar com cadeias de caracteres com um valor nulo, o resultado da concatenação dependerá das configurações da sessão. Assim como as operações aritméticas que são executadas em valores nulos, quando um valor nulo é adicionado a um valor conhecido, o resultado normalmente será um valor desconhecido, uma operação de concatenação de cadeias de caracteres executada com um valor nulo também deve produzir um resultado nulo. Entretanto, você pode alterar esse comportamento alterando a configuração de CONCAT_NULL_YIELDS_NULL para a sessão atual. Para obter mais informações, consulte SET CONCAT_NULL_YIELDS_NULL (Transact-SQL).

Se o resultado da concatenação de cadeias de caracteres exceder o limite de 8.000 bytes, o resultado será truncado. Entretanto, se pelo menos uma das cadeias de caracteres concatenadas for um tipo de valor grande, não ocorrerá truncamento.

Exemplos

A. Usando a concatenação de cadeias de caracteres

O exemplo a seguir cria uma única coluna sob o título de coluna Name a partir de colunas de vários caracteres, com o sobrenome do contato seguido por uma vírgula, um único espaço e o nome do contato. O conjunto de resultados está em ordem alfabética crescente pelo sobrenome e depois pelo nome.

USE AdventureWorks;
GO
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Contact
ORDER BY LastName ASC, FirstName ASC;

B. Combinando tipos de dados numéricos e de data

O exemplo a seguir usa a função CONVERT para concatenar os tipos de dados numeric e date.

USE AdventureWorks;
GO
SELECT 'The order is due on ' + CONVERT(varchar(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO

Conjunto de resultados.

------------------------------------------------ 
The order is due on 04/23/2003            

(1 row(s) affected)

C. Usando concatenação de várias cadeias de caracteres

O exemplo a seguir concatena várias cadeias de caracteres para formar uma cadeia de caracteres longa a fim de exibir o sobrenome e a primeira inicial dos vice-presidentes na Adventure Works Cycles. Uma vírgula é adicionada depois do sobrenome e um ponto depois da primeira inicial.

USE AdventureWorks;
GO
SELECT (LastName + ',' + SPACE(1) + SUBSTRING(FirstName, 1, 1) + '.') AS Name, e.Title
FROM Person.Contact AS c
    JOIN HumanResources.Employee AS e
    ON c.ContactID = e.ContactID
WHERE e.Title LIKE 'Vice%'
ORDER BY LastName ASC;
GO

Conjunto de resultados.

Name               Title                                         
-------------      ---------------
Duffy, T.         Vice President of Engineering
Hamilton, J.      Vice President of Production
Welcker, B.       Vice President of Sales
(3 row(s) affected)