Zurück zur Artikelliste Artikel
8 Leseminuten

Wie man zwei Spalten in SQL verkettet - Eine detaillierte Anleitung

In SQL ist die Verkettung der Vorgang des Zusammenfügens von Zeichenketten oder Textinformationen. Lernen Sie in dieser ausführlichen Anleitung, wie man zwei Spalten in SQL verkettet.

Bei der SQL-Konkatenation werden zwei oder mehr Zeichenketten, Spalten oder Ausdrücke zu einer einzigen Zeichenkette kombiniert. Zum Beispiel ergibt die Verkettung von 'Kate', ' ' und 'Smith' 'Kate Smith'.

Die SQL-Verkettung kann in einer Vielzahl von Situationen verwendet werden, in denen es notwendig ist, mehrere Zeichenfolgen zu einer einzigen Zeichenfolge zu kombinieren. Einige häufige Anwendungsfälle sind:

  • Erstellung vollständiger Namen oder anderer zusammengesetzter Zeichenfolgen aus mehreren Spalten einer Tabelle - z. B. Verkettung des Vor- und Nachnamens eines Benutzers, um einen vollständigen Namen zu erstellen.
  • Erstellen von benutzerdefinierten Beschriftungen oder Titeln durch Verkettung mehrerer String-Werte.
  • Erstellen eines eindeutigen Bezeichners durch Verkettung mehrerer Spalten - z. B. einer Kunden-ID und einer Bestellnummer.
  • Erstellen von E-Mail-Adressen durch Verkettung eines Benutzernamens (katesmith) und eines Domänennamens (learnSQL.com).

Dies sind nur einige Beispiele, aber die SQL-Verkettung kann in vielen anderen Situationen verwendet werden, in denen die Kombination mehrerer Zeichenfolgen erforderlich ist.

Die beste Möglichkeit, SQL, einschließlich SQL-Verkettung, zu üben, ist unsere interaktive SQL-Übungssatz. Er enthält fast 90 praktische Übungen, die in fünf themenbezogene Abschnitte unterteilt sind. Der Kurs ist eine gute Möglichkeit, Ihr SQL-Wissen aufzufrischen. Mit jeder gelösten Übung bauen Sie Vertrauen in Ihre Fähigkeiten auf.

Wie man zwei Spalten in SQL verkettet

Die Syntax für die SQL-Verkettung kann je nach dem verwendeten SQL-Dialekt variieren. Im Folgenden finden Sie einige Beispiele für die bekanntesten Techniken der SQL-Verknüpfung.

Der ||-Operator

Standard-SQL verwendet den Operator || (sowie einige andere Optionen). Die meisten SQL-Datenbanken, mit der bemerkenswerten Ausnahme von SQL Server, unterstützen diesen Operator. Der Operator || nimmt zwei oder mehr Argumente entgegen und gibt eine einzige verkettete Zeichenfolge zurück.

Verwendung

Stellen wir uns den folgenden Fall vor. Wir haben eine Tabelle namens users, die Benutzerinformationen speichert:

id	first_name	middle_name	last_name	age	marital_status
--------------------------------------------------------------
1	Derek		Brent		Zoolander	35	S
2	Marty		George	McFly		20	S

Verwenden wir den Operator ||, um die Vor- und Nachnamen der Benutzer zu verknüpfen und einen vollständigen Namen zu erhalten:

SELECT first_name || ' ' || last_name AS full_name 
FROM users;

Das Ergebnis:

full_name
---------------
Derek Zoolander
Marty McFly

In diesem Beispiel nimmt der Operator || die Spalten first_name und last_name aus der Tabelle users Tabelle und verkettet sie mit einem Leerzeichen dazwischen, was einen vollständigen Namen für jeden Benutzer ergibt. Das Ergebnis wird dann als full_name aliased und in den Abfrageergebnissen zurückgegeben.

Sie können mehrere Zeichenketten mit dem Operator || verketten, indem Sie mehr als zwei Argumente angeben. In der folgenden SQL-Anweisung werden beispielsweise die Vor-, Mittel- und Nachnamen der Benutzer miteinander verknüpft:

SELECT first_name || ' ' || middle_name || ' ' || last_name AS full_name 
FROM users;

Das Ergebnis:

full_name
---------------
Derek Brent Zoolander
Marty George McFly

Der Verkettungsoperator || funktioniert auch mit Nicht-Text-Spalten

Die beiden vorherigen Beispiele enthalten nur Zeichenketten; was ist mit den anderen Datentypen? Die Argumente des Operators || können Zeichenketten, Textspalten, Ausdrücke und andere Datentypen wie Zahlen oder Daten sein. Sie werden automatisch in eine Zeichenkette umgewandelt.

Hier ist ein Beispiel für die Verwendung des Operators ||, um den Vornamen, den Nachnamen und das Alter eines Benutzers zu einer neuen Zeichenkette zu verknüpfen:

SELECT 
  first_name || ' ' || last_name || ': ' || age || ' yo' AS user_details 
FROM users;

Das Ergebnis:

user_details
---------------
Derek Zoolander: 35 yo
Marty McFly: 20 yo

Beachten Sie, dass das erste Argument der Verkettung ein Textdatentyp sein muss. Wenn nicht, müssen Sie es in einen Texttyp umwandeln. Hier ein Beispiel für die Verwendung des || -Operators zur Verkettung der ID und des Vornamens eines Benutzers, um eine eindeutige Kennung zu bilden:

SELECT 
  cast(id as VARCHAR) || '_' || first_name AS unique_id 
FROM users;

Das Ergebnis:

unique_id
---------------
1_Derek
2_Marty

Vorsicht vor NULLs!

Der Verkettungsoperator | | gibt für jedes NULL-Argument NULL zurück.

Stellen Sie sich vor, dass Sie einige leere oder NULL-Werte in Ihrer Datenbank haben:

id	first_name	middle_name	last_name	age	marital_status
--------------------------------------------------------
3	Terminator			T-1000	1	S
4	Robocop					2	S

Wenn eines der Argumente der Verkettung NULL ist, gibt der gesamte Ausdruck NULL zurück. Im folgenden Beispiel versuchen wir eine Verkettung mit einem NULL Argument:

SELECT 
  first_name || ' ' || last_name AS full_name 
FROM users;

Das Ergebnis:

full_name
---------------
Terminator T-1000
NULL

Das zweite Ergebnis hier ist NULL: Robocop hat einen Vornamen, aber sein zweiter und dritter Vorname sind NULL. Wenn Sie 'Robocop' mit NULL verketten, erhalten Sie NULL.

Hinweis: Im Falle von Oracle ist NULL eine leere Zeichenkette. Die Verkettung "ignoriert" die Zeichenfolge NULL, und die verketteten Argumente werden zurückgegeben. Oracle gibt das Folgende zurück:

full_name
---------------
Terminator T-1000
Robocop

Verwendung der Funktion COALESCE() zur Verkettung von NULL-Werten

Ein unglaublicher Tipp zur Vermeidung von NULL-Werten ist die Verwendung der Funktion COALESCE(). Die Funktion COALESCE() in SQL ist eine integrierte Funktion, die den ersten Nicht-NULL-Wert in einer Liste von Ausdrücken zurückgibt. Die Funktion nimmt ein oder mehrere Argumente entgegen und gibt das erste Argument zurück, das nicht NULL ist.

Im folgenden Beispiel nehmen wir an, dass das Feld last_name NULL sein könnte. Wir wollen eine fehlerhafte Verkettung vermeiden, also verwenden wir die Funktion COALESCE():

SELECT 
  first_name || ' ' || COALESCE(last_name, '') AS full_name 
FROM users;

Das Ergebnis:

full_name
---------------
Terminator T-1000
Robocop

Oben gibt COALESCE() den Nachnamen zurück, wenn der Nachname nicht NULL ist. Wenn der Nachname NULL ist, wird die leere Zeichenkette ‘’ zurückgegeben. So können wir vermeiden, dass der NULL-Wert von Robocops Nachnamen verkettet wird und ein NULL-Ergebnis erhält.

Der +-Operator

Der Operator + wird zur Verkettung von Zeichenfolgen in MS SQL Server verwendet. Er nimmt zwei oder mehr Argumente entgegen und gibt eine einzige verkettete Zeichenfolge zurück.

Hier ist ein Beispiel für die Verwendung des + Operators, um den Vor- und Nachnamen eines Benutzers zu verknüpfen:

SELECT 
  first_name + ' ' + last_name AS full_name 
FROM users;

Das Ergebnis:

full_name
---------------
Derek Zoolander
Marty McFly

Mit dem Operator + wird keines der Argumente automatisch umgewandelt. Jedes Argument des Ausdrucks muss vom Typ VARCHAR sein, wenn die Verkettung erfolgreich sein soll. Um Werte unterschiedlichen Typs zu verketten, verwenden wir die Funktion CAST():

SELECT 
  first_name + ' ' + last_name + ': ' + CAST(age AS VARCHAR) + ' yo' AS user_details 
FROM users;

Das Ergebnis:

user_details
---------------
Derek Zoolander: 35 yo
Marty McFly: 20 yo

Ohne CAST() gibt SQL Server den folgenden Fehler aus:

MS SQL
Token error: 'Error converting data type varchar to bigint.' 

Die CONCAT-Funktion

CONCAT() ist eine weitere eingebaute SQL-Standardfunktion, die zwei oder mehr Werte miteinander verknüpft. Alle gängigen Datenbanksysteme außer SQLite akzeptieren diese Funktion; SQLite akzeptiert nur den Operator ||.

Die wichtigsten Unterschiede zwischen den Operatoren || und + und der Funktion CONCAT() sind:

  • CONCAT() Argumente werden automatisch in Strings umgewandelt, so dass Sie Argumente unterschiedlicher Datentypen verwenden können.
  • CONCAT() behandelt NULL-Werte als leere Zeichenketten und ignoriert sie. Die Ausnahme ist hier MySQL (und in geringerem Maße MariaDB). In MySQL entspricht die Funktion CONCAT() dem Operator ||; NULL-Argumente führen zu NULL Ergebnissen.

Hier ein Beispiel für die Verwendung von CONCAT() zur Verkettung von Vor- und Nachnamen von Benutzern:

SELECT 
  CONCAT(first_name, ' ', last_name) AS full_name 
FROM users;

Das Ergebnis:

full_name
---------------
Derek Zoolander
Marty McFly
Terminator T-1000
Robocop

Im folgenden Beispiel verwenden wir CONCAT(), um die ID und den Vornamen der Benutzer zu einem eindeutigen Bezeichner zu verknüpfen. Beachten Sie, dass die Funktion CAST() nicht erforderlich ist:

SELECT 
  CONCAT(id, '_', first_name) AS unique_id 
FROM users;

Das Ergebnis:

unique_id
---------------
1_Derek
2_Marty
3_Terminator
4_Robocop

Die CONCAT_WS-Funktion

Die Funktion CONCAT_WS in SQL ähnelt der Funktion CONCAT, wird aber zur Verkettung von zwei oder mehr Zeichenfolgen mit einem Trennzeichen verwendet. Die Funktion benötigt zwei Argumente: Das erste Argument ist das Trennzeichen, die restlichen Argumente sind die zu verkettenden Zeichenfolgen.

Alle gängigen Datenbanken außer Oracle und SQLite akzeptieren die Funktion CONCAT_WS. Diese Funktion ignoriert NULLs in den Argumenten (außer dem Trennzeichen) - auch bei MySQL

Verwenden wir die Funktion CONCAT_WS, um die Werte first_name und last_name mit einem Leerzeichen als Trennzeichen zu verknüpfen:

SELECT 
  CONCAT_WS(' ', first_name, last_name) AS full_name 
FROM users;

Das Ergebnis:

full_name
---------------
Derek Zoolander
Marty McFly
Terminator T-1000
Robocop

Versuchen wir nun, drei Argumente zu verketten, die durch Leerzeichen getrennt sind:

SELECT 
  CONCAT_WS(' ', first_name, middle_name, last_name) AS full_name 
FROM users;

Das Ergebnis:

full_name
---------------
Derek Brent Zoolander
Marty George McFly
Terminator T-1000
Robocop

Wenn Sie mehr über beeindruckende SQL-Funktionen erfahren möchten, empfehle ich Ihnen den Artikel 5 SQL-Funktionen zur Manipulation von Strings von Marek Pankowski.

Die Verkettung zweier Spalten in SQL ist einfach!

Ich hoffe, Sie haben diesen Artikel genauso gern gelesen wie ich ihn geschrieben habe! Die Unterschiede zwischen den SQL-Dialekten sind subtil, und es ist immer spannend, mehr darüber zu erfahren.

Hat dieser Artikel Sie ermutigt, mehr über SQL zu erfahren? Zögern Sie nicht! Ihre SQL-Reise hat bereits einen guten Anfang genommen, und LearnSQL.de bietet Ihnen alle Ressourcen und Hilfen, die Sie brauchen, um ein SQL-Experte zu werden.

Die Beherrschung von SQL ist eine praktische Erfahrung - das Erlernen der Konzepte ist eine Sache, aber das Schreiben guter Abfragen erfordert Übung. Ich empfehle Ihnen dringend unseren SQL-Übungssatz Es testet Ihre grundlegenden SQL-Kenntnisse und zeigt Ihnen, wo Sie sich verbessern müssen.

Also, worauf warten Sie noch? Begnügen Sie sich nicht mit der Verkettung von Spalten - lernen Sie noch heute mehr SQL!