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


|| (Sztringösszefűzés) (Transact-SQL)

A következőkre vonatkozik: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Database a Microsoft Fabricben

A sztringkifejezések || csövek operátora két vagy több karaktert vagy bináris sztringet, oszlopot vagy sztringek és oszlopnevek kombinációját fűzi össze egy kifejezésbe (egy sztring operátorba). Például SELECT 'SQL ' || 'Server';SQL Serverad vissza. A || operátor a sztringek összefűzését szolgáló ANSI SQL-szabványt követi. Az SQL Serverben sztringösszefűzést is végezhet + operátorral és a CONCAT() függvénnyel.

Transact-SQL szintaxis konvenciói

Syntax

expression || expression

Arguments

expression

Bármely érvényes kifejezés a karakter- és bináris adattípus-kategória bármelyik adattípusához, kivéve az xml, json, kép, ntextvagy szöveges adattípusokat. 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

Az ANSI-sztringösszefűzés szintaxisának néhány előnye:

  • Hordozhatóság: Az ANSI standard || operátor használata a sztringösszefűzéshez biztosítja, hogy az SQL-kód hordozható legyen különböző adatbázisrendszerekben. Ez azt jelenti, hogy ugyanazokat az SQL-lekérdezéseket módosítás nélkül futtathatja különböző adatbázisplatformokon.

  • Konzisztencia: Az ANSI-szabványnak való megfelelés elősegíti az SQL-kód konzisztenciáját, így könnyebben olvasható és karbantartható, különösen akkor, ha több adatbázisrendszerrel rendelkező környezetben dolgozik.

  • Interoperabilitás: Az ANSI szabványt a legtöbb SQL-kompatibilis adatbázis-rendszer széles körben ismeri és támogatja, ami növeli a különböző rendszerek és eszközök közötti interoperabilitást.

A || sztringösszefűzési operátor az SQL Server 2025 vagy always-up-todátumfrissítési szabályzattal elérhető felügyelt Azure SQL-példányban.

Sztring csonkolásának viselkedése

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és) operátor másképp viselkedik, ha üres, nulla hosszúságú sztringgel működik, mint ha NULLvagy ismeretlen értékekkel működik. 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

Az NULL értékeken végrehajtott számtani műveletekhez hasonlóan, ha egy ismert értékhez NULL értéket adnak hozzá, az eredmény általában egy NULL érték. A NULL értékkel végrehajtott sztringösszefűzési műveletnek NULL eredményt is létre kell adnia.

A || operátor nem tartja be a SET CONCAT_NULL_YIELDS_NULL beállítást, és mindig úgy viselkedik, mintha engedélyezve van az ANSI SQL viselkedése, így NULL, ha bármelyik bemenet NULL. Ez a + és || összefűző operátorok viselkedésének elsődleges különbsége. 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 alatt, Name több karakteroszlopból, a személy családnevével (LastName) és egy vesszővel, egy szóközzel, majd a személy utónevével (FirstName). 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ényhalmaz.

------------------------------------------------
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ényhalmaz.

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ényhalmaz.

y
-------
16000