Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databáze SQL v Microsoft Fabric
Operátor ve výrazu řetězce, který zřetězí dva nebo více znaků nebo binárních řetězců, sloupců nebo kombinace řetězců a názvů sloupců do jednoho výrazu (řetězcový operátor). Například SELECT 'book'+'case'; vrátí hodnotu bookcase.
Syntax
expression + expression
Arguments
expression
Libovolný platný výraz libovolného z datových typů v kategorii znaku a binárního datového typu s výjimkou obrázku, ntextu nebo textového datového typu. Oba výrazy musí být stejného datového typu nebo jeden výraz musí být schopen implicitně převést na datový typ druhého výrazu.
Návratové typy
Vrátí datový typ argumentu s nejvyšší prioritou. Další informace naleznete v tématu Priorita datového typu.
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í.
Ř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 nebo neznámými NULLhodnotami. Ř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
Při práci s řetězci s NULL hodnotou závisí výsledek zřetězení na nastavení relace. Stejně jako u aritmetických operací, které se provádějí s NULL hodnotami, by při NULL přidání hodnoty ke známé hodnotě je výsledkem obvykle neznámá hodnota, měla by operace zřetězení řetězců provedená s NULL hodnotou také vytvořit NULL výsledek.
Toto chování ale můžete změnit změnou nastavení CONCAT_NULL_YIELDS_NULL aktuální relace. Další informace naleznete v tématu SET CONCAT_NULL_YIELDS_NULL.
Použití funkce CAST a CONVERT v případě potřeby
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.
Následující příklady ukazují, kdy CONVERTnebo CASTje nutné použít s binární zřetězením a při CONVERTnebo CASTnení nutné použít.
V tomto příkladu není vyžadována žádná CONVERT ani CAST funkce, protože tento příklad zřetězí dva binární řetězce.
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;
V tomto příkladu se vyžaduje CONVERT nebo CAST funkce, protože tento příklad zřetězí dva binární řetězce a mezeru.
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
Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .
A. Použití zřetězení řetězců
Následující příklad vytvoří jeden sloupec pod záhlavím Name sloupce z více znaků sloupců, přičemž jméno rodiny osoby následované čárkou, jedinou mezerou a potom křestní jméno osoby. Sada výsledků je ve vzestupném, abecedním pořadí podle jména rodiny a potom podle jména.
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;
B. Kombinování číselných a datových typů kalendářních dat
Následující příklad používá funkci CONVERT ke zřetězení číselných a datových typů kalendářních dat.
SELECT 'The order is due on ' + CONVERT(VARCHAR(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO
Tady je soubor výsledků.
------------------------------------------------
The order is due on 04/23/2007
C. Použití zřetězení více řetězců
Následující příklad zřetězí více řetězců, aby se vytvořil jeden dlouhý řetězec, aby se zobrazilo jméno rodiny a první iniciála viceprezidentů v Adventure Works Cycles. Za jméno rodiny se přidá čárka a tečka za prvním iniciálem.
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
Tady je soubor výsledků.
Name Title
------------- ---------------`
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
D. Použití velkých řetězců v zřetězení
Následující příklad zřetězí více řetězců, aby vytvořil jeden dlouhý řetězec, a pak se pokusí vypočítat délku konečného řetězce. Konečná délka sady výsledků je 16 000, protože vyhodnocení výrazu začíná zleva, tj. @x + @z + @y => (@x + @z) + @y. V tomto případě se výsledek (@x + @z) zkrátí na 8 000 bajtů a pak se @y přidá do sady výsledků, což zkrátí konečnou délku řetězce 16 000. Vzhledem k tomu, že @y je řetězec typu velká hodnota, nedojde ke zkrácení.
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
Tady je soubor výsledků.
y
-------
16000
Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)
Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .
E. Použití zřetězení více řetězců
Následující příklad zřetězí více řetězců a vytvoří jeden dlouhý řetězec, aby se zobrazilo jméno rodiny a první iniciála viceprezidentů v ukázkové databázi. Za jméno rodiny se přidá čárka a tečka za prvním iniciálem.
SELECT (LastName + ', ' + SUBSTRING(FirstName, 1, 1) + '.') AS Name, Title
FROM DimEmployee
WHERE Title LIKE '%Vice Pres%'
ORDER BY LastName ASC;
Tady je soubor výsledků.
Name Title
------------- ---------------
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
Související obsah
- || (Zřetězení řetězců) (Transact-SQL)
- += (přiřazení zřetězení řetězců) (Transact-SQL)
- ALTER DATABASE (Transact-SQL)
- CAST a CONVERT (Transact-SQL)
- převodu datových typů (databázový stroj)
- Datové typy (Transact-SQL)
- Výrazy (Transact-SQL)
- Předdefinované funkce (Transact-SQL)
- Operátory (Transact-SQL)
- SELECT (Transact-SQL)
- Příkazy SET (Transact-SQL)