+= (assegnazione di concatenazione di stringhe) (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsEndpoint di analisi SQL in Microsoft FabricMagazzino in Microsoft FabricDatabase SQL in Microsoft Fabric

Concatena due stringhe e imposta la stringa sul risultato dell'operazione. Ad esempio, se una variabile @x è 'Adventure'uguale a , @x += 'Works' accetta il valore originale di @x, aggiunge 'Works' alla stringa e imposta @x su tale nuovo valore 'AdventureWorks'.

Convenzioni relative alla sintassi Transact-SQL

Syntax

expression += expression

Arguments

expression

Qualsiasi espressione valida di uno qualsiasi dei tipi di dati di tipo carattere.

Tipi restituiti

Restituisce il tipo di dati definito per la variabile.

Remarks

SET @v1 += 'expression' è pari a SET @v1 = @v1 + ('expression'). SET @v1 = @v2 + @v3 + @v4 Equivale anche a SET @v1 = (@v2 + @v3) + @v4.

L'operatore += non può essere usato senza una variabile. Ad esempio, il codice seguente causa un errore:

SELECT 'Adventure' += 'Works'

Examples

A. Concatenazione con l'operatore +=

Nell'esempio seguente viene eseguita una concatenazione utilizzando l'operatore +=.

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

Il set di risultati è il seguente.

This is the original. More text.

B. Ordine di valutazione durante la concatenazione tramite l'operatore +=

Nell'esempio seguente si concatenano più stringhe per formare una stringa lunga e quindi si prova a calcolare la lunghezza della stringa finale. Questo esempio illustrato l'ordine di valutazione e le regole di troncamento quando si usa l'operatore di concatenazione.

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

Il set di risultati è il seguente.

Y
-------
8000

Y
-------
12000

Y
-------
8000

Y
-------
8000