Compartilhar via


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

Aplica-se a: Banco de Dados SQL do Azure

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

O ||= operador dá suporte ao mesmo comportamento que o operador += para caracteres e cadeias de caracteres binárias.

Convenções de sintaxe de Transact-SQL

Sintaxe

variable ||= expression

Argumentos

variable

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

expressão

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

Tipos de retorno

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 LOB (objeto grande) (varchar(max) ou nvarchar(max)), a expressão resultante será de varchar(max) ou nvarchar(max).
  • Se a variável for de um tipo LOB varbinary(max), a expressão resultante será de varbinary(max).
  • Se a variável não for um tipo LOB, o resultado será truncado para o comprimento máximo do tipo declarado da variável.

Comentários

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 caractere deve ser usada ao concatenar cadeias binárias e quaisquer caracteres entre as cadeias binárias.

Cadeias de caracteres e caracteres de comprimento zero

O ||= operador (concatenação de cadeia de caracteres) se comporta de maneira diferente quando trabalha com uma cadeia de caracteres vazia de comprimento zero do que quando trabalha com NULLvalores desconhecidos ou desconhecidos. Uma cadeia de caracteres de comprimento zero pode ser especificada como duas aspas simples sem nenhum caractere dentro das aspas. Uma cadeia de caracteres binária de comprimento zero pode ser especificada como 0x sem nenhum valor de byte especificado 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

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

O ||= operador não honra a SET CONCAT_NULL_YIELDS_NULL opção e sempre se comporta como se o comportamento ANSI SQL estivesse habilitado, produzindo NULL se qualquer uma das entradas for NULL. Essa é a principal diferença de comportamento entre os += operadores de concatenação e ||= . Para saber mais, confira SET CONCAT_NULL_YIELDS_NULL.

Exemplos

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

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

Veja a seguir 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;

Veja a seguir o conjunto de resultados.

0x1A2B