+= (Zeichenfolgenverkettungszuweisung) (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Verkettet zwei Zeichenfolgen und legt die Zeichenfolge auf das Ergebnis des Vorgangs fest. Wenn beispielsweise eine Variable @x gleich 'Adventure' ist, dann übernimmt @x += 'Works' den ursprünglichen Wert von @x, fügt 'Works' der Zeichenfolge hinzu und legt @x auf den neuen Wert 'AdventureWorks' fest.

Transact-SQL-Syntaxkonventionen

Syntax

expression += expression  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

expression
Ein gültiger Ausdruck eines beliebigen Zeichendatentyps.

Ergebnistypen

Gibt den Datentyp zurück, der für die Variable definiert wird.

Bemerkungen

SET @v1 += 'Ausdruck' entspricht SET @v1 = @v1 + ('Ausdruck'). SET @v1 = @v2 + @v3 + @v4 entspricht außerdem SET @v1 = (@v2 + @v3) + @v4.

Der Operator += kann nicht ohne eine Variable verwendet werden. So verursacht z. B. der folgende Code einen Fehler:

SELECT 'Adventure' += 'Works'  

Beispiele

A. Verkettung mit +=-Operator

Im folgenden Beispiel wird mithilfe des +=-Operators verkettet.

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

Hier ist das Resultset.

This is the original. More text.

B. Reihenfolge der Auswertung beim Verketten mit dem +=-Operator

Im folgenden Beispiel werden mehrere Zeichenfolgen zu einer langen Zeichenfolge verkettet. Anschließend wird versucht, die Länge der endgültigen Zeichenfolge zu berechnen. Dieses Beispiel zeigt die Auswertungsreihenfolge und Kürzungsregeln bei Verwendung des concatenation-Operators.

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

Hier ist das Resultset.

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

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

Weitere Informationen

Operatoren (Transact-SQL)
+= (Additionszuweisung) (Transact-SQL)
+ (Verketten von Zeichenfolgen) (Transact-SQL)