Compartir a través de


||= (asignación compuesta) (Transact-SQL)

Se aplica a: Azure SQL Database

La ||= concatenación con el operador de asignación compuesta se puede usar para concatenar una expresión con el valor de un carácter o una variable de cadena binaria y, a continuación, asignar la expresión resultante a la variable.

El ||= operador admite el mismo comportamiento que el operador += para las cadenas binarias y de caracteres.

Convenciones de sintaxis de Transact-SQL

Sintaxis

variable ||= expression

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

variable

Variable T-SQL de tipo de carácter: char, varchar, nchar, nvarchar, varchar(max)o nvarchar(max), o de tipo binario: binary o varbinary(max).

expression

Carácter o expresión binaria. Si la expresión no es del tipo de carácter, el tipo de la expresión debe poder convertirse implícitamente en una cadena de caracteres.

Tipos de valores devueltos

Asigna el resultado del operador de concatenación para las cadenas de caracteres a la variable .

  • Si la variable o expresión es un valor SQL NULL , el resultado de la expresión concatenada es NULL.
  • Si la variable es de un tipo de datos de objeto grande (LOB) (varchar(max) o nvarchar(max)), la expresión resultante es de varchar(max) o nvarchar(max).
  • Si la variable es de un tipo LOB varbinary(max), la expresión resultante es de varbinary(max).
  • Si la variable no es un tipo LOB, el resultado se trunca hasta la longitud máxima del tipo declarado de la variable.

Comentarios

Si el resultado de la concatenación de cadenas es superior al límite de 8.000 bytes, el resultado se trunca. Sin embargo, si al menos una de las cadenas concatenadas es un tipo de valor grande, no se produce el truncamiento.

Debe utilizarse una conversión explícita a datos caracteres cuando se concatenan cadenas binarias y cualesquiera caracteres entre las cadenas binarias.

Cadenas y caracteres de longitud cero

El ||= operador (concatenación de cadenas) se comporta de forma diferente cuando funciona con una cadena vacía de longitud cero que cuando funciona con NULLvalores , o desconocidos. Se puede especificar una cadena de caracteres de longitud cero como dos comillas simples sin caracteres incluidos entre las comillas. Se puede especificar una cadena binaria de longitud cero como 0x sin ningún valor de byte especificado en la constante hexadecimal. La concatenación de una cadena de longitud cero siempre concatena las dos cadenas especificadas.

Concatenación de valores NULL

Al igual que con las operaciones aritméticas que se realizan en NULL valores, cuando se agrega un NULL valor a un valor conocido, el resultado suele ser un NULL valor. Una operación de concatenación de cadenas realizada con un NULL valor también debe generar un NULL resultado.

El ||= operador no respeta la SET CONCAT_NULL_YIELDS_NULL opción y siempre se comporta como si el comportamiento de ANSI SQL está habilitado, lo que produce NULL si alguna de las entradas es NULL. Esta es la diferencia principal en el comportamiento entre los operadores de += concatenación y ||= . Para más información, consulte SET CONCAT_NULL_YIELDS_NULL.

Ejemplos

A Uso de la concatenación con asignación compuesta para cadenas

DECLARE @v1 varchar(10) = 'a'
SET @v1 ||= 'b';
SELECT @v1

El conjunto de resultados es el siguiente:

ab

B. Uso de la concatenación con asignación compuesta para datos binarios

DECLARE @v2 varbinary(10) = 0x1a;
SET @v2 ||= 0x2b;
select @v2;

El conjunto de resultados es el siguiente:

0x1A2B