Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
In Datenbase Zuletzt aktualisiert: 30. August 2023
Teilen:
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

Möchten Sie zwei oder mehr Zeichenfolgenspalten in SQL verketten? Erfahren Sie, wie Sie die SQL CONCAT-Funktion zum Verketten von Zeichenfolgen verwenden.

Wenn Sie eine Datenbanktabelle abfragen, müssen Sie manchmal mehrere Text-/String-Spalten verketten, anstatt Daten aus einer einzelnen Spalte abzurufen. Dies ist hilfreich, wenn Sie eine leichter zu interpretierende und lesbare Ausgabe benötigen. 

Sie können beispielsweise a auswählen full_name Feld durch Verketten der first_name und last_name Felder. Ebenso können Sie das bekommen full_address durch Verketten der Felder „Straße“, „Stadt“, „Bundesland“ und andere erforderliche Felder.

In SQL können Sie die CONCAT-Funktion verwenden, um Zeichenfolgen zu verketten. In diesem Leitfaden gehen wir auf Folgendes ein:

  • Die Syntax der SQL CONCAT-Funktion
  • Anwendungsbeispiele 
  • Verarbeiten von NULL-Werten in einer oder mehreren Spalten während der Verkettung

Lassen Sie uns loslegen!

Syntax of the SQL CONCAT Function

Die Syntax zur Verwendung der SQL CONCAT-Funktion lautet wie folgt:

CONCAT(string_1, string_2, ..., string_n);

Hier string_1, string_2, ..., string n bezeichnen die zu verkettenden Zeichenfolgen. Dies können String-Literale oder Spalten oder eine Kombination aus beidem sein.

Concatenating String Literals with CONCAT

Da die CONCAT-Funktion auch zum Verketten von Zeichenfolgenliteralen verwendet werden kann, versuchen wir, ein einfaches Beispiel zu programmieren.

Hier verketten wir die Zeichenfolgen „Hello“ und „world!“. als die greeting Zeichenfolge:

SELECT CONCAT('Hello, ', 'world!') AS greeting;

Wenn Sie die obige Abfrage ausführen, erhalten Sie die folgende Ausgabe:

+---------------+
| greeting      |
+---------------+
| Hello, world! |
+---------------+
1 row in set (0.00 sec)

In der Praxis möchten Sie jedoch möglicherweise die erforderlichen Spalten in einer Datenbanktabelle verketten und keine Zeichenfolgenliterale. Lassen Sie uns also einige Beispiele mit der CONCAT-Funktion in SQL codieren.

How to Concatenate Columns in SQL

Als Nächstes beginnen wir mit der Abfrage einer Datenbanktabelle.

📑 Alle Beispielabfragen in diesem Tutorial wurden auf einem ausgeführt MySQL Datenbanktabelle. Sie können aber auch in einem anderen RDBMS Ihrer Wahl mitmachen.

Erstellen einer Datenbanktabelle mit Datensätzen

Erstellen wir eine Datenbank, die wir verwenden können:

CREATE DATABASE db1;
use db1;

Lassen Sie uns eine erstellen employees Tabelle in der Datenbank db1. Führen Sie dazu das aus CREATE TABLE Anweisung mit den folgenden Spalten und entsprechenden Datentypen:

CREATE TABLE employees (
    ID INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    street VARCHAR(100),
    city VARCHAR(50),
    state VARCHAR(2),
    username VARCHAR(20)
);

Als nächstes fügen wir ein paar Datensätze in das ein employees Tabelle:

INSERT INTO employees (first_name, last_name, street, city, state, username) VALUES
    ('John', 'Smith', '123 Main St', 'New York', 'NY', 'john123'),
    ('Alice', 'Johnson', '456 Elm St', 'Boston', 'MA', 'alice456'),
    ('Bob', 'Williams', '789 Oak St', 'Chicago', 'IL', 'bob789'),
    ('Mary', 'Davis', '321 Pine St', 'Houston', 'TX', 'mary456'),
    ('James', 'Brown', '555 Cedar St', 'Seattle', 'WA', 'james789'),
    ('Emily', 'Jones', '777 Maple St', 'Atlanta', 'GA', 'emily123'),
    ('Michael', 'Miller', '999 Birch St', 'Miami', 'FL', 'michael456'),
    ('Jessica', 'Wilson', '111 Walnut St', 'Dallas', 'TX', 'jessica789'),
    ('William', 'Taylor', '222 Cherry St', 'Denver', 'CO', 'william123'),
    ('Sarah', 'Martinez', '444 Pine St', 'Phoenix', 'AZ', 'sarah456');

Beispiel 1: Vollständige Namen anzeigen

Als erstes Beispiel verketten wir die first_name und dem last_name Spalten, um die zu erhalten full_name. Dazu können wir die SQL CONCAT-Funktion in der SELECT-Abfrage wie gezeigt verwenden:

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

Sie sollten die folgende Ausgabe erhalten:

+----------------+
| full_name      |
+----------------+
| John Smith     |
| Alice Johnson  |
| Bob Williams   |
| Mary Davis     |
| James Brown    |
| Emily Jones    |
| Michael Miller |
| Jessica Wilson |
| William Taylor |
| Sarah Martinez |
+----------------+
10 rows in set (0.00 sec)

Neben der first_name und dem last_nameBeachten Sie, dass wir auch Leerzeichen als Trennzeichen verwendet haben – angegeben durch die Literalzeichenfolge „“.

Beispiel 2: Konstruieren Sie Adressen

Nehmen wir nun ein anderes Beispiel.

Wir haben die street, city und state Spalten in der employees Tisch. So können wir die auswählen full_address indem Sie diese drei Felder mit einem Komma als Trennzeichen verketten:

SELECT CONCAT(street, ', ', city, ', ', state) AS full_address FROM employees;

Hier ist die Ausgabe:

+---------------------------+
| full_address              |
+---------------------------+
| 123 Main St, New York, NY |
| 456 Elm St, Boston, MA    |
| 789 Oak St, Chicago, IL   |
| 321 Pine St, Houston, TX  |
| 555 Cedar St, Seattle, WA |
| 777 Maple St, Atlanta, GA |
| 999 Birch St, Miami, FL   |
| 111 Walnut St, Dallas, TX |
| 222 Cherry St, Denver, CO |
| 444 Pine St, Phoenix, AZ  |
+---------------------------+
10 rows in set (0.00 sec)

Beispiel 3: Erstellen Sie Profil-URLs

Denken Sie daran, dass wir eine haben username Feld in der employees Tabelle.

Angenommen, Sie haben eine Root-Domain https://www.example.com/ und Benutzerprofile finden Sie unter https://www.example.com/user. Sie können das generieren profile_url Verwenden Sie die CONCAT-Funktion wie folgt:

SELECT CONCAT('https://www.example.com/user/', username) AS profile_url 
FROM employees;

Wie zu sehen ist, erhalten wir die Profil-URLs für alle Mitarbeiter:

+-----------------------------------------+
| profile_url                             |
+-----------------------------------------+
| https://www.example.com/user/john123    |
| https://www.example.com/user/alice456   |
| https://www.example.com/user/bob789     |
| https://www.example.com/user/mary456    |
| https://www.example.com/user/james789   |
| https://www.example.com/user/emily123   |
| https://www.example.com/user/michael456 |
| https://www.example.com/user/jessica789 |
| https://www.example.com/user/william123 |
| https://www.example.com/user/sarah456   |
+-----------------------------------------+
10 rows in set (0.00 sec)

Handling NULL Values

In der Mitarbeitertabelle sind alle Datensätze enthalten alle die Felder. Was aber, wenn Sie ein oder mehrere Felder mit NULL-Werten haben?

Nehmen wir für diesen Fall ein Beispiel. Hier wir Aktualisieren Sie den Datensatz entsprechend ID = 2, um die Straßenspalte auf NULL zu setzen:

UPDATE employees
SET street = NULL
WHERE ID = 2; -- Update the record with ID 2
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Jetzt verwenden wir CONCAT, um das auszuwählen full_address:

SELECT CONCAT(street, ', ', city, ', ', state) AS full_address FROM employees;

Hier ist die Ausgabe:

+---------------------------+
| full_address              |
+---------------------------+
| 123 Main St, New York, NY |
| NULL                      |
| 789 Oak St, Chicago, IL   |
| 321 Pine St, Houston, TX  |
| 555 Cedar St, Seattle, WA |
| 777 Maple St, Atlanta, GA |
| 999 Birch St, Miami, FL   |
| 111 Walnut St, Dallas, TX |
| 222 Cherry St, Denver, CO |
| 444 Pine St, Phoenix, AZ  |
+---------------------------+
10 rows in set (0.00 sec)

Beachten Sie, dass das zweite Element in der Ergebnismenge NULL ist.

Aber wir hätten uns gewünscht, dass die Ausgabe die Verkettung der ist city und dem state Spalten, um eine ungefähre Vorstellung von der Adresse zu erhalten. Wenn Sie solche NULL-Werte haben, können Sie diese verwenden CONCAT_WS als Alternative zur CONCAT-Funktion. Mal sehen, wie es funktioniert.

Verwenden von CONCAT_WS zur Behandlung von NULL-Werten während der Verkettung

CONCAT_WS ist eine Alternative zu CONCAT, die verwendet werden kann, wenn Sie vermuten, dass ein oder mehrere Felder NULL-Werte enthalten.

Sie können die Funktion CONCAT_WS wie folgt verwenden:

CONCAT_WS(separator, string_1, string_2,..., string_n)

Führen Sie nun die folgende SELECT-Abfrage aus:

SELECT CONCAT_WS(', ', street, city, state) AS full_address FROM employees;

Sie erhalten die folgende Ausgabe:

+---------------------------+
| full_address              |
+---------------------------+
| 123 Main St, New York, NY |
| Boston, MA                |
| 789 Oak St, Chicago, IL   |
| 321 Pine St, Houston, TX  |
| 555 Cedar St, Seattle, WA |
| 777 Maple St, Atlanta, GA |
| 999 Birch St, Miami, FL   |
| 111 Walnut St, Dallas, TX |
| 222 Cherry St, Denver, CO |
| 444 Pine St, Phoenix, AZ  |
+---------------------------+
10 rows in set (0.01 sec)

Wie Sie sehen, erhalten wir für das zweite Element im Ergebnissatz „Boston MA“ als street Feld ist NULL.

⚠ Bei Verwendung von CONCAT_WS ist dies der Fall falls angefordert um das Trennzeichen anzugeben. Wenn Sie das Trennzeichen nicht angeben, ist das Ergebnis NULL, wenn eine oder mehrere Spalten NULL sind (ähnlich wie bei CONCAT).

Fazit

Sehen wir uns noch einmal an, was wir gelernt haben:

  • Wenn Sie eine Datenbanktabelle abfragen, um Daten abzurufen, möchten Sie möglicherweise mehrere Zeichenfolgenspalten verketten, um hilfreichere und einfacher zu interpretierende Abfrageergebnisse zu erhalten. Dazu können Sie die CONCAT-Funktion in SQL mit der Syntax verwenden CONCAT(string_1, string_2, ..., string_n).
  • Sie können Zeichenfolgenliterale, Spalten oder eine Kombination aus beidem verketten. Wenn jedoch ein oder mehrere NULL-Werte vorhanden sind, ist das Ergebnis für diesen bestimmten Datensatz NULL. Um dies zu bewältigen, können Sie verwenden CONCAT_WS mit der Syntax CONCAT_WS(separator, string_1, string_2, ..., string_n).
  • CONCAT_WS Behandelt NULL-Werte eleganter, indem nur die vorhandenen Zeichenfolgen mit dem angegebenen Trennzeichen verkettet werden.

Für einen schnellen Überblick über SQL-Befehle und deren Verwendung können Sie dies mit einem Lesezeichen versehen SQL-Spickzettel.

  • Bala Priya C
    Autor
    Bala Priya ist ein Entwickler und technischer Redakteur aus Indien mit über drei Jahren Erfahrung im Bereich des Schreibens technischer Inhalte. Sie teilt ihre Erkenntnisse mit der Entwickler-Community, indem sie technische Tutorials, Anleitungen und mehr verfasst. Mehr Blogartikel
  • Narendra Mohan Mittal
    Herausgeber

    Narendra Mohan Mittal ist Senior Digital Branding Strategist und Content Editor mit über 12 Jahren vielseitiger Erfahrung. Er verfügt über einen M-Tech (Goldmedaillengewinner) und B-Tech (Goldmedaillengewinner) in Informatik und Ingenieurwesen.


    ... Mehr Blogartikel
Danke an unsere Sponsoren
Weitere großartige Lesungen auf Database
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.