Dela via


||= (Sammansatt tilldelning) (Transact-SQL)

Gäller för: SQL Server 2025 (17.x) Förhandsversion av Azure SQL DatabaseAzure SQL Managed InstanceSQL Database i Förhandsversion av Microsoft Fabric

Sammanlänkningen ||= med den sammansatta tilldelningsoperatorn kan användas för att sammanfoga ett uttryck med värdet för ett tecken eller en binär strängvariabel och sedan tilldela det resulterande uttrycket till variabeln.

Operatorn ||= stöder samma beteende som operatorn += för tecken och binära strängar.

Transact-SQL syntaxkonventioner

Syntax

variable ||= expression

Arguments

variable

En T-SQL-variabel av teckentyp: char, varchar, nchar, nvarchar, varchar(max)eller nvarchar(max), eller av binär typ: binär eller varbinär eller varbinär(max).

expression

Ett tecken eller ett binärt uttryck. Om uttrycket inte är av teckentypen måste uttryckets typ implicit kunna konverteras till en teckensträng.

Returtyper

Tilldelar resultatet av sammanfogningsoperatorn för teckensträngar till variabeln.

  • Om variabeln eller uttrycket är ett SQL-värde NULL är NULLresultatet av det sammanfogade uttrycket .
  • Om variabeln är av en stor objektdatatyp (LOB) (varchar(max) eller nvarchar(max)) är det resulterande uttrycket varchar(max) eller nvarchar(max).
  • Om variabeln är av en LOB-typ varbinary(max), är det resulterande uttrycket av varbinary(max).
  • Om variabeln inte är en LOB-typ trunkeras resultatet till den maximala längden på den deklarerade typen av variabel.

Remarks

Om resultatet av sammanlänkningen av strängar överskrider gränsen på 8 000 byte trunkeras resultatet. Men om minst en av de sammanfogade strängarna är en stor värdetyp sker trunkering inte.

En explicit konvertering till teckendata måste användas när binära strängar sammanfogas och eventuella tecken mellan de binära strängarna.

Pipes-operatorn ||= är tillgänglig i Azure SQL Managed Instance med sql Server 2025- eller Always-up-to-datumuppdateringsprincipen.

Strängar och tecken med noll längd

Operatorn ||= (strängsammanfogning) fungerar annorlunda när den fungerar med en tom sträng med noll längd än när den fungerar med NULLeller okända värden. En teckensträng med noll längd kan anges som två enkla citattecken utan några tecken inom citattecknen. En binär sträng med noll längd kan anges som 0x utan några bytevärden som anges i hexadecimal konstanten. När du sammanfogar en sträng med noll längd sammanfogas alltid de två angivna strängarna.

Sammanfogning av NULL-värden

Precis som med aritmetiska åtgärder som utförs på NULL värden, när ett NULL-värde läggs till i ett känt värde, är resultatet vanligtvis ett NULL värde. En strängsammanfogningsåtgärd som utförs med ett NULL värde bör också ge ett NULL resultat.

Operatorn ||= uppfyller inte alternativet SET CONCAT_NULL_YIELDS_NULL och beter sig alltid som om ANSI SQL-beteendet är aktiverat, vilket ger NULL om någon av indata är NULL. Det här är den primära skillnaden i beteende mellan operatorerna += och ||= sammanfogning. Mer information finns i SET CONCAT_NULL_YIELDS_NULL.

Examples

A. Använda sammanlänkning med sammansatt tilldelning för strängar

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

Här är resultatet.

ab

B. Använda sammanlänkning med sammansatt tilldelning för binära data

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

Här är resultatet.

0x1A2B