Freigeben über


CONCAT (Transact-SQL)

Gibt eine Zeichenfolge zurück, die das Ergebnis der Verkettung von zwei oder mehr Zeichenfolgenwerten darstellt.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

CONCAT ( string_value1, string_value2 [, string_valueN ] )

Argumente

  • string_value
    Ein Zeichenfolgenwert, der mit den anderen Werten verkettet werden soll.

Rückgabetypen

Zeichenfolge, deren Länge und Typ von der Eingabe abhängen.

Hinweise

CONCAT lässt eine variable Anzahl von Zeichenfolgenargumenten zu und verkettet sie in einer einzelnen Zeichenfolge. Es sind mindestens zwei Eingabewerte erforderlich. Andernfalls wird ein Fehler ausgelöst. Alle Argumente werden implizit in Zeichenfolgentypen konvertiert und dann verkettet. NULL-Werte werden implizit in eine leere Zeichenfolge konvertiert. Wenn alle Argumente NULL sind, 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

Für ein Argument vom Typ SQL-CLR, SQL-CLR-UDT oder nvarchar(max)

nvarchar(max)

Andernfalls, wenn ein Argument vom Typ varbinary(max) oder varchar(max) ist

varchar(max), sofern keiner der Parameter vom Typ nvarchar mit beliebiger Länge ist. Ist dies der Fall, dann ist das Ergebnis vom Typ nvarchar(max).

Andernfalls, wenn ein Argument vom Typ nvarchar(<= 4000) ist

nvarchar(<= 4000)

Andernfalls, in allen anderen Fällen

varchar(< = 8000), sofern keiner der Parameter vom Typ nvarchar mit beliebiger Länge ist. Ist dies der Fall, dann ist das Ergebnis vom Typ nvarchar(max).

Wenn die Argumente <=4000 für nvarchar oder < = 8000 für varchar lauten, können sich implizite Konvertierungen auf die Länge des Ergebnisses auswirken. Andere Datentypen haben andere Längen, wenn sie implizit in Zeichenfolgen konvertiert werden. Ein Wert vom Typ int(14) hat beispielsweise eine Zeichenfolgenlänge von 12, während ein float-Wert eine Länge von 32 hat. Somit hat das Ergebnis aus der Verkettung von zwei ganzen Zahlen eine Länge von mindestens 24.

Wenn keines der Eingabeargumente einen unterstützten LOB-Typ aufweist, wird der Rückgabetyp unabhängig vom Rückgabetyp auf eine Lange von 8000 gekürzt. Durch diese Kürzung wird Speicherplatz eingespart und die Effizienz der Plangenerierung gesteigert.

Diese Funktion kann remote auf SQL Server 2012-Servern oder höher ausgeführt werden. Eine Remoteausführung auf Servern mit einer Version unter SQL Server 2012 ist nicht möglich.

Beispiele

A.Verwenden von CONCAT

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

Dies 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;

Dies ist das Resultset.

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

(1 row(s) affected)