+= (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)