+= (Sztringösszefűzés hozzárendelése) (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Összefűz két sztringet, és a sztringet a művelet eredményére állítja. Ha például egy változó egyenlő , akkor @x += 'Works' az eredeti értéket @xveszi fel , hozzáadja 'Works' a sztringhez, és beállítja @x az új értéket 'AdventureWorks'.'Adventure'@x

Transact-SQL szintaxis konvenciók

Syntax

expression += expression

Arguments

expression

Bármely karakteradattípus érvényes kifejezése .

Visszatérési típusok

A változóhoz definiált adattípust adja vissza.

Remarks

SET @v1 += 'expression'egyenértékű a .-nak.SET @v1 = @v1 + ('expression') SET @v1 = @v2 + @v3 + @v4 Az is egyenértékű a SET @v1 = (@v2 + @v3) + @v4.

Az += operátor nem használható változó nélkül. A következő kód például hibát okoz:

SELECT 'Adventure' += 'Works'

Examples

A. Összefűzés a += operátorral

Az alábbi példa összefűzi az operátort += .

DECLARE @v1 VARCHAR(40);
SET @v1 = 'This is the original.';
SET @v1 += ' More text.';
PRINT @v1;

Itt van az eredmények összessége.

This is the original. More text.

B. A kiértékelés sorrendje a += operátorral történő összefűzés során

Az alábbi példa több sztringet fűz össze egy hosszú sztring létrehozásához, majd megpróbálja kiszámítani az utolsó sztring hosszát. Ez a példa a kiértékelési sorrendet és a csonkolási szabályokat mutatja be az összefűzési operátor használata közben.

DECLARE @x VARCHAR(4000) = REPLICATE('x', 4000);
DECLARE @z VARCHAR(8000) = REPLICATE('z', 8000);
DECLARE @y VARCHAR(MAX);

SET @y = '';
SET @y += @x + @z;
SELECT LEN(@y) AS Y; -- 8000

SET @y = '';
SET @y = @y + @x + @z;
SELECT LEN(@y) AS Y; -- 12000

SET @y = '';
SET @y = @y + (@x + @z);
SELECT LEN(@y) AS Y; -- 8000

SET @y = '';
SET @y = @x + @z + @y;
SELECT LEN(@y) AS Y; -- 8000
GO

Itt van az eredmények összessége.

Y
-------
8000

Y
-------
12000

Y
-------
8000

Y
-------
8000