+= (назначение объединения строк) (Transact-SQL)

Применимо к:SQL ServerБаза данных Azure SQLУправляемый экземпляр Azure SQLAzure Synapse AnalyticsСистема платформы аналитики (PDW)Конечная точка SQL аналитики в Microsoft FabricХранилище в Microsoft FabricБаза данных SQL в Microsoft Fabric

Объединяет две строки и присваивает строке результат этой операции. Например, если переменная равна, принимает @x += 'Works' исходное значение@x, добавляется 'Works' в строку и задает @x это новое значение'AdventureWorks'.'Adventure'@x

Соглашения о синтаксисе Transact-SQL

Syntax

expression += expression

Arguments

expression

Любое допустимое выражение любого из типов данных символов.

Типы возвращаемых данных

Возвращает тип данных, определенный для переменной.

Remarks

SET @v1 += 'expression' эквивалентен SET @v1 = @v1 + ('expression'). Кроме того, SET @v1 = @v2 + @v3 + @v4 эквивалентно SET @v1 = (@v2 + @v3) + @v4.

Оператор += нельзя использовать без переменной. Например, следующий код вызывает ошибку:

SELECT 'Adventure' += 'Works'

Examples

A. Объединение с помощью оператора +=

В следующем примере выполняется объединение строк с помощью оператора +=.

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

Вот результирующий набор.

This is the original. More text.

B. Порядок вычисления при объединениях с помощью оператора +=

В приведенном ниже примере выполняется объединение нескольких строк в одну длинную строку, а затем предпринимается попытка вычислить длину итоговой строки. В этом примере демонстрируются правила оценки и усечения при использовании оператора объединения.

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

Вот результирующий набор.

Y
-------
8000

Y
-------
12000

Y
-------
8000

Y
-------
8000