Поделиться через


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

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

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

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

Синтаксис

expression += expression  

Аргументы

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

Типы результата

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

Замечания

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

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

SELECT 'Adventure' += 'Works'  

Примеры

А. Объединение с использованием оператора +=

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

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
-- or
SET @y = '';
SET @y = @x + @z + @y;
SELECT LEN(@y) AS Y; -- 8000
GO

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

Y       
------- 
8000 
 
(1 row(s) affected) 
 
   
Y       
------- 
12000 
 
(1 row(s) affected) 

Y       
------- 
8000 
 
(1 row(s) affected) 
 
Y       
------- 
8000 
 
(1 row(s) affected)

См. также

Операторы (Transact-SQL)
+= (присваивание сложения) (Transact-SQL)
+ (Объединение строк) (Transact-SQL)