CONCAT_WS (Transact-SQL)
Gilt für: SQL Server 2017 (14.x) und höher
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-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. Sie trennt diese verketteten Zeichenfolgenwerte mit dem im ersten Funktionsargument angegebenen Trennzeichen. (CONCAT_WS
gibt die Anweisung concatenate with separator (mit Trennzeichen verketten) an.)
Syntax
CONCAT_WS ( separator, argument1, argument2 [, argumentN]... )
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
separator Ein Ausdruck eines beliebigen Zeichentyps (char
, nchar
, nvarchar
oder varchar
).
argument1, argument2, argumentN Ein Ausdruck eines beliebigen Typs. Die CONCAT_WS
-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_WS
lässt eine variable Anzahl von Zeichenfolgenargumenten zu und verkettet (oder verknüpft) sie in einer einzelnen Zeichenfolge. Sie trennt diese verketteten Zeichenfolgenwerte mit dem im ersten Funktionsargument angegebenen Trennzeichen. CONCAT_WS
erfordert ein Trennzeichen und mindestens zwei weitere Zeichenfolgenwerte als Argumente, andernfalls gibt CONCAT_WS
einen Fehler aus. Alle Argumente werden von CONCAT_WS
vor der Verkettung implizit in Zeichenfolgentypen konvertiert.
Die implizite Konvertierung in Zeichenfolgen erfolgt basierend auf den vorhandenen Regeln für Datentypkonvertierungen. Weitere Informationen zu Verhaltens- und Datentypkonvertierungen finden Sie unter CONCAT (Transact-SQL).
Behandeln von NULL-Werten
CONCAT_WS
ignoriert die SET CONCAT_NULL_YIELDS_NULL {ON|OFF}
-Einstellung.
Wenn CONCAT_WS
Argumente nur mit NULL-Werten empfängt, wird eine leere Zeichenfolge vom Typ varchar(1) zurückgegeben.
CONCAT_WS
ignoriert NULL-Werte bei der Verkettung und fügt keine Trennzeichen zwischen NULL-Werten hinzu. Daher kann CONCAT_WS
die Verkettung von Zeichenfolgen, in denen möglicherweise „leere“ Werte auftreten, wie etwa ein zweites Adressfeld, sauber verarbeiten. Weitere Informationen finden Sie unter Beispiel B.
Wenn ein Szenario durch ein Trennzeichen getrennte NULL-Werte beinhaltet, ziehen Sie die Funktion ISNULL
in Erwägung. Weitere Informationen finden Sie unter Beispiel C.
Beispiele
A. Verketten von Werten mit einem Trennzeichen
Dieses Beispiel verkettet drei Spalten der sys.databases-Tabelle, wobei die Werte durch das Trennzeichen -
voneinander getrennt werden.
SELECT CONCAT_WS( ' - ', database_id, recovery_model_desc, containment_desc) AS DatabaseInfo
FROM sys.databases;
Hier ist das Resultset.
DatabaseInfo |
---|
1 - SIMPLE - NONE |
2 - SIMPLE - NONE |
3 - FULL - NONE |
4 - SIMPLE - NONE |
B. Überspringen von NULL-Werten
In diesem Beispiel werden NULL
-Werte in der Argumentliste ignoriert.
SELECT CONCAT_WS(',','1 Microsoft Way', NULL, NULL, 'Redmond', 'WA', 98052) AS Address;
Hier ist das Resultset.
Address
------------
1 Microsoft Way,Redmond,WA,98052
C. Generieren von Daten im CSV-Format aus einer Tabelle
Dieses Beispiel verwendet ein Komma ,
als Trennzeichen und fügt ein Wagenrücklaufzeichen char(13)
hinzu, sodass ein durch Kommas getrenntes Werteformat im Resultset entsteht.
SELECT
STRING_AGG(CONCAT_WS( ',', database_id, recovery_model_desc, containment_desc), char(13)) AS DatabaseInfo
FROM sys.databases
Hier ist das Resultset.
DatabaseInfo
------------
1,SIMPLE,NONE
2,SIMPLE,NONE
3,FULL,NONE
4,SIMPLE,NONE
CONCAT_WS ignoriert NULL-Werte in den Spalten. Umschließen Sie eine Spalte, die NULL-Werte zulässt, mit der ISNULL
-Funktion, und geben Sie einen Standardwert an. Weitere Informationen finden Sie in diesem Beispiel:
SELECT
STRING_AGG(CONCAT_WS( ',', database_id, ISNULL(recovery_model_desc,''), ISNULL(containment_desc,'N/A')), char(13)) AS DatabaseInfo
FROM sys.databases;
Weitere Informationen
CONCAT (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)