Problem:
Sie möchten Zeichenfolgen aus zwei Spalten einer Tabelle zu einer zusammenfügen.
Beispiel:
Unsere Datenbank hat eine Tabelle namens student
mit Daten in den folgenden Spalten:id
, first_name
und last_name
.
id | Vorname | Nachname |
---|---|---|
1 | Lora | Smith |
2 | Emil | Braun |
3 | Alex | Jackson |
4 | Martin | Davis |
Lassen Sie uns den Vornamen in einer Zeichenfolge an den Nachnamen des Schülers anhängen. Verwenden Sie zwischen jedem Namen ein Leerzeichen.
Lösung:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
Diese Abfrage gibt Datensätze in einer Spalte namens full_name
zurück :
vollständiger_name |
---|
Lora Smith |
Emil Brown |
Alex Jackson |
Martin Davis |
Diskussion:
Um eine Zeichenfolge an eine andere anzuhängen und ein Ergebnis zurückzugeben, verwenden Sie || Operator. Dies fügt zwei Zeichenfolgen von links und rechts zusammen und gibt ein Ergebnis zurück. Wenn Sie den Namen der Spalte verwenden, schließen Sie ihn nicht in Anführungszeichen ein. Wenn Sie jedoch einen Zeichenfolgenwert als Leerzeichen oder Text verwenden, schließen Sie ihn in Anführungszeichen ein.
In unserem Beispiel haben wir first_name
ein Leerzeichen hinzugefügt und dann die Spalte last_name
. Diese neue Spalte heißt full_name
.
Sie können auch eine spezielle Funktion verwenden:CONCAT. Es braucht eine Liste von Strings oder Namen von Spalten, die als Argumente verbunden werden sollen:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
Die Ergebnisse sind identisch.
Die CONCAT()-Funktion eignet sich jedoch besser zum Abrufen von Daten aus einer Spalte mit NULL-Werten. Wieso den? Denn wenn eine NULL in den zu verknüpfenden Werten enthalten ist, gibt der Operator als Ergebnis NULL zurück. Bei CONCAT() wird NULL nicht angezeigt.
Sehen Sie sich das Ergebnis von || an Bediener, wenn Emill keinen Nachnamen gespeichert hat:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
vollständiger_name |
---|
Lora Smith |
NULL |
Alex Jackson |
Martin Davis |
Sehen Sie sich die CONCAT-Funktion für die gleichen Daten an:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
vollständiger_name |
---|
Lora Smith |
Emil |
Alex Jackson |
Martin Davis |