Compartir a través de


+= (Asignación de concatenación de cadenas) (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de SQL Analytics en Microsoft FabricAlmacén en Microsoft FabricBase de datos SQL en Microsoft Fabric

Concatena dos cadenas y establece como valor de la cadena el resultado de la operación. Por ejemplo, si una variable @x es igual a "Adventure", @x += "Works" toma el valor original de @x, agrega "Works" a la cadena y establece @x en el nuevo valor ("AdventureWorks").

Convenciones de sintaxis de Transact-SQL

Syntax

expression += expression  

Arguments

expression
Es cualquier expresión válida de alguno de los tipos de datos de carácter.

Tipos de resultados

Devuelve el tipo de datos que se define para la variable.

Remarks

SET @v1 += "expresión" equivale a SET @v1 = @v1 + ("expresión"). Asimismo, SET @v1 = @v2 + @v3 + @v4 equivale a SET @v1 = (@v2 + @v3) + @v4.

El operador += no se puede utilizar sin una variable. Por ejemplo, el código siguiente provocará un error:

SELECT 'Adventure' += 'Works'  

Examples

A. Concatenación con el operador +=

En el siguiente ejemplo se concatena con el operador +=.

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

Este es el conjunto de resultados.

This is the original. More text.

B. Orden de evaluación al concatenar con el operador +=

En el siguiente ejemplo se concatenan varias cadenas para formar una cadena larga y, luego, se intenta calcular la longitud de la cadena final. En este ejemplo se muestran las reglas de truncamiento y orden de evaluación cuando se usa el operador de concatenación.

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

Este es el conjunto de resultados.

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

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

Véase también

Operadores (Transact-SQL)
+= (Asignación de suma) (Transact-SQL)
+ (Concatenación de cadenas) (Transact-SQL)