+= (Atribuição de concatenação de strings) (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Concatena duas cadeias de caracteres e define a cadeia de caracteres para o resultado da operação. Por exemplo, se uma variável @x for 'Adventure'igual a , então @x += 'Works' toma o valor original de @x, soma 'Works' à cadeia e define @x para esse novo valor 'AdventureWorks'.

Transact-SQL convenções de sintaxe

Syntax

expression += expression

Arguments

expression

Qualquer expressão válida de qualquer um dos tipos de dados de caracteres.

Tipos de devolução

Retorna o tipo de dados definido para a variável.

Remarks

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 seguinte código causa um erro:

SELECT 'Adventure' += 'Works'

Examples

A. Concatenação usando o operador +=

O exemplo a seguir concatena usando o += operador .

DECLARE @v1 VARCHAR(40);
SET @v1 = 'This is the original.';
SET @v1 += ' More text.';
PRINT @v1;

Aqui está o conjunto de resultados.

This is the original. More text.

B. Ordem de avaliação durante a concatenação usando 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 comprimento da cadeia de caracteres final. Este exemplo demonstra a ordem de avaliação e as regras de truncamento, ao usar o 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

SET @y = '';
SET @y = @x + @z + @y;
SELECT LEN(@y) AS Y; -- 8000
GO

Aqui está o conjunto de resultados.

Y
-------
8000

Y
-------
12000

Y
-------
8000

Y
-------
8000