CONCAT (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse 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.
Hinweis
Zum Hinzufügen eines Trennwerts beim Verkettungsvorgang verwenden Sie CONCAT_WS.
Transact-SQL-Syntaxkonventionen
Syntax
CONCAT ( argument1 , argument2 [ , argumentN ] ... )
Argumente
argument1, argument2 [ , argumentN ]
Ein Ausdruck eines beliebigen Zeichenfolgenwerts. Die CONCAT
-Funktion erfordert mindestens zwei Argumente und lässt nicht mehr als 254 Argumente zu.
Rückgabetypen
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 löst CONCAT
einen Fehler aus. 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 eines SQL-CLR-Systemtyps, eines SQL-CLR UDT oder nvarchar(max) | nvarchar(max) |
2. Für ein 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 | jedes Argument vom Typ varchar von bis zu 8.000 Zeichen (varchar(<= 8000)), 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. Ein int mit Wert 14
hat z.B. eine Zeichenfolgenlänge von 2, während ein float mit Wert 1234.56789
eine Länge von 7 (1234.57
) hat. Aus diesem Grund gibt eine Verkettung dieser zwei Werte ein Ergebnis mit einer Länge von mindestens 9 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 8.000 Zeichen gekürzt. Durch diese Kürzung wird Speicherplatz eingespart und die Effizienz der Plangenerierung unterstützt.
CONCAT
kann remote auf einem verknüpften Server mit SQL Server 2012 (11.x) und höheren Versionen 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 sehen Sie das Ergebnis.
Result
--------------------
Happy Birthday 11/25
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 sehen Sie das Ergebnis.
Result
------------
NameLastname