CONCAT (Transact-SQL)CONCAT (Transact-SQL)

GILT FÜR: jaSQL Server (ab 2012) jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server (starting with 2012) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Diese Funktion gibt eine Zeichenfolge zurück, die das Ergebnis einer End-to-End-Verkettung oder -Verknüpfung von mindestens zwei Zeichenfolgenwerten darstellt.This function returns a string resulting from the concatenation, or joining, of two or more string values in an end-to-end manner. (Informationen zum Hinzufügen eines Trennwerts beim Verkettungsvorgang finden Sie unter CONCAT_WS.)(To add a separating value during concatenation, see CONCAT_WS.)

Themenlinksymbol Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

CONCAT ( string_value1, string_value2 [, string_valueN ] )  

ArgumenteArguments

string_valuestring_value
Ein Zeichenfolgenwert, der mit den anderen Werten verkettet werden soll.A string value to concatenate to the other values. Die CONCAT-Funktion erfordert mindestens zwei und nicht mehr als 254 string_value-Argumente.The CONCAT function requires at least two string_value arguments, and no more than 254 string_value arguments.

RückgabetypenReturn types

string_valuestring_value
Ein Zeichenfolgenwert, dessen Länge und Typ von der Eingabe abhängig sind.A string value whose length and type depend on the input.

RemarksRemarks

CONCAT lässt eine variable Anzahl von Zeichenfolgenargumenten zu und verkettet (oder verknüpft) sie in einer einzelnen Zeichenfolge.CONCAT takes a variable number of string arguments and concatenates (or joins) them into a single string. Es sind mindestens zwei Eingabewerte erforderlich. Andernfalls wird durch CONCAT ein Fehler ausgelöst.It requires a minimum of two input values; otherwise, CONCAT will raise an error. Alle Argumente werden von CONCAT vor der Verkettung implizit in Zeichenfolgentypen konvertiert.CONCAT implicitly converts all arguments to string types before concatenation. NULL-Werte werden von CONCAT implizit in leere Zeichenfolgen konvertiert.CONCAT implicitly converts null values to empty strings. Wenn CONCAT Argumente nur mit NULL-Werten empfängt, wird eine leere Zeichenfolge vom Typ varchar(1) zurückgegeben.If CONCAT receives arguments with all NULL values, it will return an empty string of type varchar(1). Die implizite Konvertierung in Zeichenfolgen erfolgt basierend auf den vorhandenen Regeln für Datentypkonvertierungen.The implicit conversion to strings follows the existing rules for data type conversions. Weitere Informationen zu Datentypkonvertierungen finden Sie unter CAST und CONVERT (Transact-SQL).See CAST and CONVERT (Transact-SQL) for more information about data type conversions.

Der Rückgabetyp hängt vom Typ der Argumente ab.The return type depends on the type of the arguments. In der folgenden Tabelle wird die Zuordnung veranschaulicht:This table illustrates the mapping:

EingabetypInput type Ausgabetyp und -längeOutput type and length
1. Jedes Argument vom Typ1. Any argument of

SQL-CLRa SQL-CLR system type

SQL-CLR-UDTa SQL-CLR UDT

oderor

nvarchar(max)
nvarchar(max)nvarchar(max)
2. Andernfalls jedes Argument vom Typ2. Otherwise, any argument of type

varbinary(max)varbinary(max)

oderor

varchar(max)varchar(max)
varchar(max), sofern keiner der Parameter vom Typ nvarchar mit beliebiger Länge ist.varchar(max), unless one of the parameters is an nvarchar of any length. In diesem Fall gibt CONCAT ein Ergebnis vom Typ nvarchar(max) zurück.In this case, CONCAT returns a result of type nvarchar(max).
3. Andernfalls jedes Argument vom Typ nvarchar mit höchstens 4000 Zeichen3. Otherwise, any argument of type nvarchar of at most 4000 characters

(nvarchar(<= 4000))( nvarchar(<= 4000) )
nvarchar(<= 4000)nvarchar(<= 4000)
4. In allen anderen Fällen4. In all other cases varchar(<=8000, varchar mit höchstens 8000 Zeichen), sofern keiner der Parameter vom Typ „nvarchar“ mit beliebiger Länge ist.varchar(<= 8000) (a varchar of at most 8000 characters) unless one of the parameters is an nvarchar of any length. In diesem Fall gibt CONCAT ein Ergebnis vom Typ nvarchar(max) zurück.In that case, CONCAT returns a result of type nvarchar(max).

Wenn CONCAT Eingabeargumente vom Typ nvarchar mit einer Länge von <= 4000 Zeichen oder Eingabeargumente vom Typ varchar mit einer Länge von <= 8000 Zeichen empfängt, können implizite Konvertierungen die Länge des Ergebnisses beeinflussen.When CONCAT receives nvarchar input arguments of length <= 4000 characters, or varchar input arguments of length <= 8000 characters, implicit conversions can affect the length of the result. Andere Datentypen besitzen andere Längen, wenn sie implizit in Zeichenfolgen konvertiert werden.Other data types have different lengths when implicitly converted to strings. int (14) hat z.B. eine Zeichenfolgenlänge von 12, während float eine Länge von 32 hat.For example, an int (14) has a string length of 12, while a float has a length of 32. Aus diesem Grund gibt eine Verkettung von zwei ganzen Zahlen ein Ergebnis mit einer Länge von mindestens 24 Zeichen zurück.Therefore, a concatenation of two integers returns a result with a length of no less than 24.

Wenn keines der Eingabeargumente einen unterstützten LOB-Typ (Large Object) aufweist, wird der Rückgabetyp unabhängig vom Rückgabetyp auf eine Länge von 8000 Zeichen gekürzt.If none of the input arguments has a supported large object (LOB) type, then the return type truncates to 8000 characters in length, regardless of the return type. Durch diese Kürzung wird Speicherplatz eingespart und die Effizienz der Plangenerierung unterstützt.This truncation preserves space and supports plan generation efficiency.

Die CONCAT-Funktion kann über eine Remoteverknüpfung auf einem Verbindungsserver der Version SQL Server 2012 (11.x)SQL Server 2012 (11.x) und höher ausgeführt werden.The CONCAT function can be executed remotely on a linked server of version SQL Server 2012 (11.x)SQL Server 2012 (11.x) and above. Bei älteren Verbindungsservern wird der CONCAT-Vorgang lokal ausgeführt, nachdem die nicht verketteten Werte vom Verbindungsserver zurückgegeben wurden.For older linked servers, the CONCAT operation will happen locally, after the linked server returns the non-concatenated values.

BeispieleExamples

A.A. Verwenden von CONCATUsing CONCAT

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

Im Folgenden finden Sie das Resultset.Here is the result set.

Result  
-------------------------  
Happy Birthday 11/25  
  
(1 row(s) affected)  

B.B. Verwenden von CONCAT mit NULL-WertenUsing CONCAT with NULL values

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;  

Im Folgenden finden Sie das Resultset.Here is the result set.

Result  
------------------  
NameLastname  
  
(1 row(s) affected)  

Siehe auchSee also

CONCAT_WS (Transact-SQL) CONCAT_WS (Transact-SQL)
FORMATMESSAGE (Transact-SQL)FORMATMESSAGE (Transact-SQL)
QUOTENAME (Transact-SQL)QUOTENAME (Transact-SQL)
REPLACE (Transact-SQL)REPLACE (Transact-SQL)
REVERSE (Transact-SQL)REVERSE (Transact-SQL)
STRING_AGG (Transact-SQL)STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)STRING_ESCAPE (Transact-SQL)
STUFF (Transact-SQL)STUFF (Transact-SQL)
TRANSLATE (Transact-SQL)TRANSLATE (Transact-SQL)
String Functions (Transact-SQL) (Zeichenfolgenfunktionen (Transact-SQL))String Functions (Transact-SQL)