Sdílet prostřednictvím


CONCAT (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Tato funkce vrátí řetězec, který je výsledkem zřetězení nebo spojení dvou nebo více řetězcových hodnot koncovým způsobem.

Poznámka:

Pro přidání separační hodnoty během konkatenace použijte CONCAT_WS.

Transact-SQL konvence syntaxe

Syntaxe

CONCAT ( argument1 , argument2 [ , argumentN ] ... )

Arguments

argument1, argument2 [ , argumentN ]

Výraz libovolné řetězcové hodnoty. Funkce CONCAT vyžaduje alespoň dva argumenty a maximálně 254 argumentů.

Návratové typy

Řetězcová hodnota, jejíž délka a typ závisí na vstupu.

Poznámky

CONCAT vezme proměnný počet řetězcových argumentů a zřetězí je (nebo spojí) do jednoho řetězce. Vyžaduje minimálně dvě vstupní hodnoty; jinak vznikne CONCAT chyba. CONCAT implicitně převede všechny argumenty na typy řetězců před zřetězením. CONCAT implicitně převádí nulové hodnoty na prázdné řetězce. Pokud CONCAT obdrží argumenty se všemi hodnotami NULL, vrátí prázdný řetězec typu varchar(1). Implicitní převod na řetězce se řídí existujícími pravidly pro převody datových typů. Pro více informací o převodech datových typů viz CAST a CONVERT (Transact-SQL).

Typ návratu závisí na typu argumentů. Tato tabulka ilustruje zobrazení:

Typ vstupu Typ výstupu a délka
1. Jakýkoli argument SQL-CLR typu systému, SQL-CLR UDT nebo nvarchar(max) nvarchar(max)
2. Jinak jakýkoli argument typu varbinary(max) nebo varchar(max) varchar(max), pokud jeden z parametrů není nvarchar libovolné délky. V tomto případě vrací CONCAT výsledek typu nvarchar(max).
3. Jinak jakýkoli argument typu nvarchar až do 4000 znaků (nvarchar(<= 4000)) nvarchar(<= 4000)
4. Ve všech ostatních případech Jakýkoli argument typu varchar až do 8000 znaků (varchar(<= 8000)), pokud jeden z parametrů není nvarchar libovolné délky. V tomto případě vrací CONCAT výsledek typu nvarchar(max).

Když CONCAT přijme vstupní argumenty nvarchar délky <= 4000 znaků, nebo varchar vstupní argumenty délky <= 8000 znaků, implicitní převody mohou ovlivnit délku výsledku. Jiné datové typy mají při implicitním převodu na řetězce různou délku. Například int s hodnotou 14 má délku řetězce 2, zatímco float s hodnotou 1234.56789 má délku řetězce 7 (1234.57). Proto konkatenace těchto dvou hodnot vrátí výsledek s délkou nejméně 9 znaků.

Pokud žádný z argumentů vstupu nemá podporovaný typ velkého objektu (LOB), pak se typ návratu zkrátí na 8 000 znaků, bez ohledu na typ návratu. Toto zkrácení šetří prostor a podporuje efektivitu generování plánů.

CONCAT lze jej spustit vzdáleně na propojeném serveru běžícím na SQL Server 2012 (11.x) a novějších verzích. U starších propojených serverů se CONCAT operace provádí lokálně, poté co propojený server vrátí nespojené hodnoty.

Examples

A. Použijte CONCAT

SELECT CONCAT ('Happy ', 'Birthday ', 11, '/', '25') AS Result;

Tady je soubor výsledků.

Result
--------------------
Happy Birthday 11/25

B. Použijte CONCAT s hodnotami NULL

CREATE TABLE #temp (
    emp_name NVARCHAR(200) NOT NULL,
    emp_middlename NVARCHAR(200) NULL,
    emp_lastname NVARCHAR(200) NOT NULL
    );

INSERT INTO #temp
VALUES ('Name', NULL, 'Lastname');

SELECT CONCAT (emp_name, emp_middlename, emp_lastname) AS Result
FROM #temp;

Tady je soubor výsledků.

Result
------------
NameLastname