Partilhar via


||= (Atribuição composta) (Transact-SQL)

Aplica-se a: SQL Server 2025 (17.x) Azure SQL Database AzureSQL Managed InstanceSQL database in Microsoft Fabric

A ||= concatenação com o operador de atribuição composta pode ser usada para concatenar uma expressão com o valor de um caractere ou variável de cadeia binária e, em seguida, atribuir a expressão resultante à variável.

O ||= operador suporta o mesmo comportamento que o operador += para caracteres e cadeias binárias.

Transact-SQL convenções de sintaxe

Syntax

variable ||= expression

Arguments

variable

Uma variável T-SQL do tipo caracteres: char, varchar, nchar, nvarchar, varchar(max) ou nvarchar(max), ou do tipo binário: binário ou varbinary ou varbinary(max).

expression

Um caractere ou expressão binária. Se a expressão não for do tipo de caractere, o tipo da expressão deve poder ser convertido implicitamente em uma cadeia de caracteres.

Tipos de devolução

Atribui o resultado do operador de concatenação para cadeias de caracteres à variável.

  • Se a variável ou expressão for um valor SQL NULL , o resultado da expressão concatenada será NULL.
  • Se a variável for de um tipo de dados de objeto grande (LOB) (varchar(max) ou nvarchar(max)), então a expressão resultante será de varchar(max) ou nvarchar(max).
  • Se a variável é de um tipo LOB varbinary(max), então a expressão resultante é de varbinary(max).
  • Se a variável não for um tipo LOB, o resultado será truncado até o comprimento máximo do tipo declarado da variável.

Remarks

Se o resultado da concatenação de cadeias de caracteres exceder o limite de 8.000 bytes, o resultado será truncado. No entanto, se pelo menos uma das cadeias de caracteres concatenadas for um tipo de valor grande, o truncamento não ocorrerá.

Uma conversão explícita em dados de caracteres deve ser usada ao concatenar cadeias binárias e quaisquer caracteres entre as cadeias binárias.

O ||= operador de pipes está disponível na Instância Gerenciada SQL do Azure com a política de atualizaçãoSQL Server 2025 ou Always-up-to-date.

Cadeias de caracteres e caracteres de comprimento zero

O operador ||= (concatenação de cadeia de caracteres) se comporta de forma diferente quando trabalha com uma cadeia de caracteres vazia de comprimento zero do que quando trabalha com valores NULLou desconhecidos. Uma cadeia de caracteres de comprimento zero pode ser especificada como duas aspas simples sem nenhum caractere dentro das aspas. Uma cadeia binária de comprimento zero pode ser especificada como 0x sem quaisquer valores de byte especificados na constante hexadecimal. A concatenação de uma cadeia de caracteres de comprimento zero sempre concatena as duas cadeias de caracteres especificadas.

Concatenação de valores NULL

Tal como acontece com as operações aritméticas que são executadas em valores NULL, quando um valor NULL é adicionado a um valor conhecido, o resultado é normalmente um valor NULL. Uma operação de concatenação de cadeia de caracteres executada com um valor NULL também deve produzir um resultado NULL.

O operador ||= não honra a opção SET CONCAT_NULL_YIELDS_NULL e sempre se comporta como se o comportamento ANSI SQL estivesse habilitado, produzindo NULL se alguma das entradas estiver NULL. Esta é a principal diferença de comportamento entre os operadores += e ||= concatenação. Para obter mais informações, consulte SET CONCAT_NULL_YIELDS_NULL.

Examples

A. Usar concatenação com atribuição composta para cadeias de caracteres

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

Aqui está o conjunto de resultados.

ab

B. Usar concatenação com atribuição composta para dados binários

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

Aqui está o conjunto de resultados.

0x1A2B