Megosztás a következőn keresztül:


+ (Sztringösszefűzés) (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

Egy sztringkifejezés olyan operátora, amely két vagy több karaktert vagy bináris sztringet, oszlopot vagy sztringek és oszlopnevek kombinációját egyesít egy kifejezéssel (sztring operátor). Például SELECT 'book'+'case'; visszaadja.bookcase

Transact-SQL szintaxis konvenciók

Syntax

expression + expression

Arguments

expression

A karakter- és bináris adattípus-kategória bármelyik adattípusának érvényes kifejezése , kivéve a kép-, az ntext- vagy a szöveges adattípust. Mindkét kifejezésnek azonos adattípusúnak kell lennie, vagy az egyik kifejezésnek implicit módon konvertálhatónak kell lennie a másik kifejezés adattípusára.

Visszatérési típusok

Az argumentum adattípusát adja vissza a legmagasabb prioritással. További információ: Adattípus elsőbbsége.

Remarks

Ha a sztringek összefűzésének eredménye meghaladja a 8000 bájtos korlátot, az eredmény csonkolt lesz. Ha azonban az összefűzött sztringek közül legalább egy nagy értéktípus, akkor a csonkolás nem történik meg.

Nulla hosszúságú sztringek és karakterek

A + sztringösszefűzési operátor másképp viselkedik, ha üres, nulla hosszúságú sztringgel dolgozik, mint ha ismeretlen értékekkel NULLdolgozik. A nulla hosszúságú karaktersztring megadható két idézőjelként anélkül, hogy az idézőjeleken belül karakterek kellenek. A nulla hosszúságú bináris sztringek 0x adhatók meg a hexadecimális állandóban megadott bájtértékek nélkül. A nulla hosszúságú sztring összefűzésével mindig összefűzi a két megadott sztringet.

NULL értékek összefűzése

Ha értékekkel rendelkező sztringekkel NULL dolgozik, az összefűzés eredménye a munkamenet beállításaitól függ. Az értékeken NULL végrehajtott aritmetikai műveletekhez hasonlóan, ha egy NULL értéket hozzáadnak egy ismert értékhez, az eredmény általában ismeretlen érték, egy értékkel végrehajtott NULL sztringösszefűzési műveletnek is eredményt kell eredményeznie NULL .

Ezt a viselkedést azonban módosíthatja az aktuális munkamenet beállításának CONCAT_NULL_YIELDS_NULL módosításával. További információ: SET CONCAT_NULL_YIELDS_NULL.

A CAST és a CONVERT használata, ha szükséges

A bináris sztringek és a bináris sztringek közötti karakterek összefűzésekor explicit átalakítást kell végezni a karakteradatokká.

Az alábbi példák azt mutatják be, hogy mikor kell CONVERTvagy CASTbináris összefűzéssel használni, és mikor nem kell használni CONVERTvagy CAST.

Ebben a példában nincs szükség CONVERT vagy CAST függvényre, mert ez a példa két bináris sztringet fűz össze.

DECLARE @mybin1 VARBINARY(5), @mybin2 VARBINARY(5);

SET @mybin1 = 0xFF;
SET @mybin2 = 0xA5;
-- No CONVERT or CAST function is required because this example
-- concatenates two binary strings.
SELECT @mybin1 + @mybin2;

Ebben a példában egy CONVERT vagy CAST függvényre van szükség, mert ez a példa két bináris sztringet és egy szóközt fűz össze.

DECLARE @mybin1 VARBINARY(5), @mybin2 VARBINARY(5);

SET @mybin1 = 0xFF;
SET @mybin2 = 0xA5;

-- A CONVERT or CAST function is required because this example
-- concatenates two binary strings plus a space.
SELECT CONVERT(VARCHAR(5), @mybin1) + ' '
   + CONVERT(VARCHAR(5), @mybin2);
-- Here is the same conversion using CAST.
SELECT CAST(@mybin1 AS VARCHAR(5)) + ' '
   + CAST(@mybin2 AS VARCHAR(5));

Examples

A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.

A. Sztringösszefűzés használata

Az alábbi példa egyetlen oszlopot hoz létre az oszlopfejléc Name alatt több karakteroszlopból, a személy családi nevével, majd egy vesszővel, egy szóközzel, majd a személy utónevével. Az eredményhalmaz növekvő, betűrendbe rendezett a családnév, majd az utónév szerint.

SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;

B. Numerikus és dátum típusú adattípusok egyesítése

Az alábbi példa a CONVERT függvénnyel fűzi össze numerikus és dátum adattípusokat.

SELECT 'The order is due on ' + CONVERT(VARCHAR(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO

Itt van az eredmények összessége.

------------------------------------------------
The order is due on 04/23/2007

C. Több sztringösszefűzés használata

Az alábbi példa több sztringet fűz össze, hogy egy hosszú sztringet alkotva megjelenítse az Adventure Works Cycles alelnökeinek családi nevét és első monogramját. A rendszer a családnév és az első kezdeti időszak után vesszőt ad hozzá.

SELECT (LastName + ',' + SPACE(1) + SUBSTRING(FirstName, 1, 1) + '.') AS Name, e.JobTitle
FROM Person.Person AS p
    JOIN HumanResources.Employee AS e
    ON p.BusinessEntityID = e.BusinessEntityID
WHERE e.JobTitle LIKE 'Vice%'
ORDER BY LastName ASC;
GO

Itt van az eredmények összessége.

Name               Title
-------------      ---------------`
Duffy, T.          Vice President of Engineering
Hamilton, J.       Vice President of Production
Welcker, B.        Vice President of Sales

D. Nagy sztringek használata összefűzéskor

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. Az eredményhalmaz végső hossza 16 000, mivel a kifejezés kiértékelése balról indul, azaz @x + @z + @y => (@x + @z) + @y. Ebben az esetben a (@x + @z) eredménye 8000 bájton csonkolt, majd @y hozzáadódik az eredményhalmazhoz, ami 16 000-et tesz ki. Mivel @y egy nagy értéktípusú sztring, a csonkolás nem történik meg.

DECLARE @x VARCHAR(8000) = REPLICATE('x', 8000)
DECLARE @y VARCHAR(max) = REPLICATE('y', 8000)
DECLARE @z VARCHAR(8000) = REPLICATE('z',8000)
SET @y = @x + @z + @y
-- The result of following select is 16000
SELECT LEN(@y) AS y
GO

Itt van az eredmények összessége.

y
-------
16000

Példák: Azure Synapse Analytics and Analytics Platform System (PDW)

A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.

E. Több sztringösszefűzés használata

Az alábbi példa több sztringet fűz össze, hogy egy hosszú sztringet alkotva megjelenítse a családnevet és az alelnökök első monogramját egy mintaadatbázisban. A rendszer a családnév és az első kezdeti időszak után vesszőt ad hozzá.

SELECT (LastName + ', ' + SUBSTRING(FirstName, 1, 1) + '.') AS Name, Title
FROM DimEmployee
WHERE Title LIKE '%Vice Pres%'
ORDER BY LastName ASC;

Itt van az eredmények összessége.

Name               Title
-------------      ---------------
Duffy, T.          Vice President of Engineering
Hamilton, J.       Vice President of Production
Welcker, B.        Vice President of Sales