Udostępnij za pomocą


||= (przypisanie złożone) (Transact-SQL)

Dotyczy: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Database w usłudze Microsoft Fabric

Łączenie ||= z operatorem przypisania złożonego może służyć do łączenia wyrażenia z wartością zmiennej znaku lub ciągu binarnego, a następnie przypisania wyrażenia wynikowego do zmiennej.

Operator ||= obsługuje to samo zachowanie co operator += dla ciągów znaków i binarnych.

Transact-SQL konwencje składni

Syntax

variable ||= expression

Arguments

variable

Zmienna T-SQL typu znaku: char, varchar, nchar, nvarchar, varchar(max), lub nvarchar(max), lub typu binarnego: binary lub varbinary lub varbinary(max).

expression

Znak lub wyrażenie binarne. Jeśli wyrażenie nie jest typem znaku, typ wyrażenia musi być niejawnie konwertowany na ciąg znaków.

Typy zwracane

Przypisuje wynik operatora łączenia dla ciągów znaków do zmiennej.

  • Jeśli zmienna lub wyrażenie jest wartością SQL NULL , wynikiem połączenia wyrażenia jest NULL.
  • Jeśli zmienna ma duży typ danych obiektu (LOB) (varchar(max) lub nvarchar(max)), wynikowe wyrażenie ma wartość varchar(max) lub nvarchar(max).
  • Jeśli zmienna jest typu LOB varbinary(max),, wynikowe wyrażenie jest zmiennej varbinary(max).
  • Jeśli zmienna nie jest typem LOB, wynik zostanie obcięty do maksymalnej długości zadeklarowanego typu zmiennej.

Remarks

Jeśli wynik łączenia ciągów przekracza limit 8000 bajtów, wynik zostanie obcięty. Jeśli jednak co najmniej jeden ze połączonych ciągów jest dużym typem wartości, obcięcie nie występuje.

Jawna konwersja na dane znaków musi być używana podczas łączenia ciągów binarnych i wszystkich znaków między ciągami binarnymi.

Operator ||= potoków jest dostępny w usłudze Azure SQL Managed Instance z zasadami aktualizacjiprogramu SQL Server 2025 lub Always-up-to-date.

Ciągi i znaki o zerowej długości

Operator ||= (łączenie ciągów) działa inaczej, gdy działa z pustym ciągiem o zerowej długości niż w przypadku pracy z wartościami NULLlub nieznanymi. Ciąg znaków o zerowej długości można określić jako dwa pojedyncze znaki cudzysłowu bez żadnych znaków wewnątrz cudzysłowu. Ciąg binarny o zerowej długości można określić jako 0x bez żadnych wartości bajtów określonych w stałej szesnastkowej. Łączenie ciągu o zerowej długości zawsze łączy dwa określone ciągi.

Łączenie wartości NULL

Podobnie jak w przypadku operacji arytmetycznych wykonywanych na wartościach NULL, gdy wartość NULL jest dodawana do znanej wartości, wynik jest zazwyczaj wartością NULL. Operacja łączenia ciągów wykonana z wartością NULL powinna również wygenerować wynik NULL.

Operator ||= nie uwzględnia opcji SET CONCAT_NULL_YIELDS_NULL i zawsze zachowuje się tak, jakby zachowanie ANSI SQL zostało włączone, co daje NULL, jeśli którykolwiek z danych wejściowych jest NULL. Jest to podstawowa różnica w zachowaniu między operatorami łączenia += i ||=. Aby uzyskać więcej informacji, zobacz SET CONCAT_NULL_YIELDS_NULL.

Examples

A. Używanie łączenia z przypisaniem złożonym dla ciągów

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

Oto zestaw wyników.

ab

B. Używanie łączenia z przypisaniem złożonym dla danych binarnych

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

Oto zestaw wyników.

0x1A2B