Compartir a través de


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

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento 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

Sintaxis

expression += expression  

Argumentos

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

Tipos de resultado

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

Observaciones

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'  

Ejemplos

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;  

El conjunto de resultados es el siguiente:

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

El conjunto de resultados es el siguiente:

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

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

Consulte también

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