CONCAT (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Diese Funktion gibt eine Zeichenfolge zurück, die das Ergebnis einer End-to-End-Verkettung oder -Verknüpfung von mindestens zwei Zeichenfolgenwerten darstellt. (Informationen zum Hinzufügen eines Trennwerts beim Verkettungsvorgang finden Sie unter CONCAT_WS.)

Transact-SQL-Syntaxkonventionen

Syntax

CONCAT ( string_value1, string_value2 [, string_valueN ] )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

string_value
Ein Zeichenfolgenwert, der mit den anderen Werten verkettet werden soll. Die CONCAT-Funktion erfordert mindestens zwei und nicht mehr als 254 string_value-Argumente.

Rückgabetypen

string_value
Ein Zeichenfolgenwert, dessen Länge und Typ von der Eingabe abhängig sind.

Bemerkungen

CONCAT lässt eine variable Anzahl von Zeichenfolgenargumenten zu und verkettet (oder verknüpft) sie in einer einzelnen Zeichenfolge. Es sind mindestens zwei Eingabewerte erforderlich. Andernfalls wird durch CONCAT ein Fehler ausgelöst. Alle Argumente werden von CONCAT vor der Verkettung implizit in Zeichenfolgentypen konvertiert. NULL-Werte werden von CONCAT implizit in leere Zeichenfolgen konvertiert. Wenn CONCAT Argumente nur mit NULL-Werten empfängt, wird eine leere Zeichenfolge vom Typ varchar(1) zurückgegeben. Die implizite Konvertierung in Zeichenfolgen erfolgt basierend auf den vorhandenen Regeln für Datentypkonvertierungen. Weitere Informationen zu Datentypkonvertierungen finden Sie unter CAST und CONVERT (Transact-SQL).

Der Rückgabetyp hängt vom Typ der Argumente ab. In der folgenden Tabelle wird die Zuordnung veranschaulicht:

Eingabetyp Ausgabetyp und -länge
1. Jedes Argument vom Typ

SQL-CLR

SQL-CLR-UDT

oder

nvarchar(max)
nvarchar(max)
2. Andernfalls jedes Argument vom Typ

varbinary(max)

oder

varchar(max)
varchar(max) , sofern keiner der Parameter vom Typ nvarchar mit beliebiger Länge ist. In diesem Fall gibt CONCAT ein Ergebnis vom Typ nvarchar(max) zurück.
3. Andernfalls jedes Argument vom Typ nvarchar mit höchstens 4000 Zeichen

( nvarchar(<= 4000) )
nvarchar(<= 4000)
4. In allen anderen Fällen varchar(<=8000, varchar mit höchstens 8.000 Zeichen), sofern keiner der Parameter vom Typ „nvarchar“ mit beliebiger Länge ist. In diesem Fall gibt CONCAT ein Ergebnis vom Typ nvarchar(max) zurück.

Wenn CONCAT Eingabeargumente vom Typ nvarchar mit einer Länge von <= 4.000 Zeichen oder Eingabeargumente vom Typ varchar mit einer Länge von <= 8.000 Zeichen empfängt, können implizite Konvertierungen die Länge des Ergebnisses beeinflussen. Andere Datentypen besitzen andere Längen, wenn sie implizit in Zeichenfolgen konvertiert werden. int (14) hat z.B. eine Zeichenfolgenlänge von 12, während float eine Länge von 32 hat. Aus diesem Grund gibt eine Verkettung von zwei ganzen Zahlen ein Ergebnis mit einer Länge von mindestens 24 Zeichen zurück.

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. Durch diese Kürzung wird Speicherplatz eingespart und die Effizienz der Plangenerierung unterstützt.

Die CONCAT-Funktion kann über eine Remoteverknüpfung auf einem Verbindungsserver der Version SQL Server 2012 (11.x) und höher ausgeführt werden. Bei älteren Verbindungsservern wird der CONCAT-Vorgang lokal ausgeführt, nachdem die nicht verketteten Werte vom Verbindungsserver zurückgegeben wurden.

Beispiele

A. Verwenden von CONCAT

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

Hier ist das Resultset.

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

B. Verwenden von CONCAT mit NULL-Werten

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;  

Hier ist das Resultset.

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

Siehe auch

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