+= (Atribuição de concatenação de cadeia de caracteres) (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW) Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric Banco de Dados SQL no Microsoft Fabric
Concatena duas cadeias de caracteres e define a cadeia de caracteres como o resultado da operação. Por exemplo, se uma variável @x for igual a 'Adventure', @x + = 'Works' usará o valor original de @x, adicionará 'Works' à cadeia de caracteres, e definirá @x com o novo valor 'AdventureWorks'.
Convenções de sintaxe de Transact-SQL
Sintaxe
expression += expression
Argumentos
expressão
É qualquer expression válida de um dos tipos de dados de caractere.
Tipos de resultado
Retorna o tipo de dados definido para a variável.
Comentários
SET @v1 += 'expression' é equivalente a SET @v1 = @v1 + ('expression'). Além disso, SET @v1 = @v2 + @v3 + @v4 é equivalente a SET @v1 = (@v2 + @v3) + @v4.
O operador + = não pode ser usado sem uma variável. Por exemplo, o código a seguir provoca um erro:
SELECT 'Adventure' += 'Works'
Exemplos
a. Concatenação com o operador +=
O exemplo a seguir concatena o uso do operador +=
.
DECLARE @v1 VARCHAR(40);
SET @v1 = 'This is the original.';
SET @v1 += ' More text.';
PRINT @v1;
Veja a seguir o conjunto de resultados.
This is the original. More text.
B. Ordem de avaliação ao concatenar com o operador +=
O exemplo a seguir concatena várias cadeias de caracteres para formar uma cadeia de caracteres longa e, em seguida, tenta calcular o tamanho da cadeia de caracteres final. Este exemplo demonstra as regras de truncamento e a ordem de avaliação, durante o uso do operador de concatenação.
DECLARE @x VARCHAR(4000) = REPLICATE('x', 4000)
DECLARE @z VARCHAR(8000) = REPLICATE('z',8000)
DECLARE @y VARCHAR(max);
SET @y = '';
SET @y += @x + @z;
SELECT LEN(@y) AS Y; -- 8000
SET @y = '';
SET @y = @y + @x + @z;
SELECT LEN(@y) AS Y; -- 12000
SET @y = '';
SET @y = @y +(@x + @z);
SELECT LEN(@y) AS Y; -- 8000
-- or
SET @y = '';
SET @y = @x + @z + @y;
SELECT LEN(@y) AS Y; -- 8000
GO
Veja a seguir o conjunto de resultados.
Y
-------
8000
(1 row(s) affected)
Y
-------
12000
(1 row(s) affected)
Y
-------
8000
(1 row(s) affected)
Y
-------
8000
(1 row(s) affected)
Confira também
Operadores (Transact-SQL)
+= (Atribuição de adição) (Transact-SQL)
+ (Concatenação de cadeias de caracteres) (Transact-SQL)