Sdílet prostřednictvím


||= (složené přiřazení) (Transact-SQL)

Platí pro: SQL Server 2025 (17.x) Azure SQL Database Azure SQLManaged InstanceSQL Database v Microsoft Fabric

Zřetězení ||= s operátorem složeného přiřazení lze použít ke zřetězení výrazu s hodnotou znaku nebo binární proměnné řetězce a následnému přiřazení výsledného výrazu k proměnné.

Operátor ||= podporuje stejné chování jako operátor += pro znakové a binární řetězce.

Transact-SQL konvence syntaxe

Syntax

variable ||= expression

Arguments

variable

Proměnná T-SQL typu znaku: char, varchar, nchar, nvarchar, varchar(max) nebo nvarchar(max) nebo binárního typu: binární nebo varbinární nebo varbinary(max).

expression

Znak nebo binární výraz Pokud výraz není typu znaku, musí být typ výrazu schopen implicitně převést na řetězec znaků.

Návratové typy

Přiřadí výsledek operátoru zřetězení pro řetězce znaků proměnné.

  • Pokud je proměnná nebo výraz hodnotou SQL NULL , výsledek zřetězeného výrazu je NULL.
  • Pokud je proměnná datového typu velkého objektu (LOB) (varchar(max) nebo nvarchar(max)), výsledný výraz je varchar(max) nebo nvarchar(max).
  • Pokud je proměnná typu LOB varbinary(max),je výsledný výraz varbinary(max).
  • Pokud proměnná není typem LOB, výsledek se zkrátí na maximální délku deklarovaného typu proměnné.

Remarks

Pokud výsledek zřetězení řetězců překročí limit 8 000 bajtů, výsledek se zkrátí. Pokud je ale alespoň jeden z řetězců zřetězený velký typ hodnoty, nedojde ke zkrácení.

Explicitní převod na data znaků se musí použít při zřetězení binárních řetězců a všech znaků mezi binárními řetězci.

Operátor ||= kanálů je k dispozici ve službě Azure SQL Managed Instance se zásadami aktualizaceSQL Serveru 2025 nebo Always-up-to-date.

Řetězce a znaky nulové délky

Operátor ||= (zřetězení řetězců) se chová odlišně, když pracuje s prázdným řetězcem nulové délky, než když pracuje s NULLnebo neznámými hodnotami. Řetězec znaku nulové délky lze zadat jako dvě jednoduché uvozovky bez jakýchkoli znaků uvnitř uvozovek. Binární řetězec nulové délky lze zadat jako 0x bez jakýchkoli hodnot bajtů zadaných v šestnáctkové konstantě. Zřetězení řetězce nulové délky vždy zřetězí dva zadané řetězce.

Zřetězení hodnot NULL

Stejně jako u aritmetických operací, které se provádějí s NULL hodnotami, při přidání NULL hodnoty ke známé hodnotě je výsledkem obvykle NULL hodnota. Operace zřetězení řetězců provedená s hodnotou NULL by měla také vytvořit NULL výsledek.

Operátor ||= neresektuje možnost SET CONCAT_NULL_YIELDS_NULL a vždy se chová, jako by bylo povolené chování ANSI SQL, a poskytuje NULL, pokud je některý ze vstupů NULL. Toto je hlavní rozdíl v chování mezi operátory += a ||= zřetězení. Další informace naleznete v tématu SET CONCAT_NULL_YIELDS_NULL.

Examples

A. Použití zřetězení se složeným přiřazením pro řetězce

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

Tady je soubor výsledků.

ab

B. Použití zřetězení se složeným přiřazením pro binární data

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

Tady je soubor výsledků.

0x1A2B