mysql concat group_concat functions with examples
In diesem Tutorial wird die Verwendung von MySQL CONCAT mit Select- und GROUP_CONCAT-Funktionen mit Syntax und praktischen Beispielen erläutert:
CONCAT ist eine von MySQL unterstützte String-Funktion, mit der zwei oder mehr Strings kombiniert oder zusammengefügt und als einzelner Wert zurückgegeben werden können. Der Name CONCAT stammt von der Verbverkettung, was bedeutet, dass zwei oder mehr Entitäten miteinander verbunden werden.
In diesem Tutorial lernen wir die Verwendung von CONCAT anhand von Abfragebeispielen und anderen Variationen der von MySQL bereitgestellten CONCAT-Funktion kennen.
Was du lernen wirst:
MySQL CONCAT-Funktion
Syntax:
Die Syntax der CONCAT-Funktion ist unkompliziert. Es enthält nur eine durch Kommas getrennte Liste der Zeichenfolgen, die verbunden werden müssen.
CONCAT(string1, string2, ------ stringN)
Sowohl die von der CONCAT-Funktion erwarteten Eingabe- als auch die Ausgabetypen sind Zeichenfolgen. Selbst wenn es mit Zahlen geliefert wird, ist die endgültige Ausgabe String.
Zum Beispiel:
# 1) Mit Eingabetypen als Strings.
SELECT CONCAT('string1', 'string2'); //Output string1string2
#zwei) Mit Eingabe als Zahlen / Gleitkommazahlen.
SELECT CONCAT(1,2); //Output 12 SELECT CONCAT(1.1234,2); //Output 1.12342
Verwenden von CONCAT mit SELECT-Anweisungen
CONCAT wird am häufigsten neben den SELECT-Abfragen verwendet, bei denen Daten aus zwei oder mehr Spalten in einer einzigen Spalte zusammengefasst werden können.
Ein klassisches Beispiel kann sein, dass wir eine Tabelle haben, die separate Spalten für die Felder firstName und lastName enthält. Angenommen, Sie möchten beim Anzeigen von Daten den vollständigen Namen anstelle des Vornamens und des Nachnamens anzeigen. Wir können CONCAT nutzen und die ausgewählten Daten entsprechend anzeigen.
Lassen Sie uns dies in Aktion sehen.
Was ist der Unterschied zwischen Qualitätskontrolle und Qualitätssicherung?
Erstellen Sie zunächst eine Schülertabelle mit den Feldern ID, Vorname, Nachname, Alter, Geburtsdatum und Abteilung.
CREATE TABLE student (id INT PRIMARY KEY, fname VARCHAR(100), lname VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
Fügen Sie einige Dummy-Daten in die Tabelle ein.
INSERT INTO student values (1,'Darren', 'Still', 32, '1988-05-20', 'ENGINEERING'), (2,'Abhishek', 'Kumar', 28, '1992-05-20', 'ACCOUNTING'), (3,'Amit', 'Singh', 30, '1990-09-20', 'ENGINEERING'), (4,'Steven', 'Johnson', 40, '1980-05-21', 'HUMAN RESOURCES'), (5,'Kartik', 'Shamungam', 20, '2000-05-12', 'TRAINEE');
Schreiben Sie nun eine SELECT-Abfrage, um einen vollständigen Namen als verkettete Zeichenfolge zu erhalten, die Vor- und Nachnamen kombiniert.
SELECT CONCAT(fname,lname) as fullName from student
//Ausgabe
vollständiger Name |
---|
DarrenStill |
AbhishekKumar |
AmitSingh |
StevenJohnson |
KartikShamungam |
Wie Sie in der obigen Ausgabe sehen können, gibt es keinen Abstand zwischen Vor- und Nachname, wodurch es unlesbar wird. Wir können den Abstand erhöhen, indem wir die CONCAT-Funktion aktualisieren, um ein zusätzliches Leerzeichen als zu verkettende Zeichenfolge zu erhalten.
SELECT CONCAT(fname, ' ', lname) as fullName from student
Dies würde sicherstellen, dass Sie mit jedem Eintrag einen zusätzlichen Abstand dazwischen haben.
Verwenden von CONCAT With GROUP
MySQL bietet eine weitere Funktion namens GROUP_CONCAT.
Es ähnelt CONCAT, unterscheidet sich jedoch in der Art und Weise, wie CONCAT zum Kombinieren von Werten über Spalten hinweg verwendet wird, während die Funktion GROUP_CONCAT hauptsächlich zum Verketten von Werten über Zeilen hinweg verwendet wird.
MySQL GROUP_CONCAT-Syntax
SELECT col1, col2, ..., colN GROUP_CONCAT ( (DISTINCT) col_name1 (ORDER BY clause) (SEPARATOR str_val) ) FROM table_name GROUP BY col_name2;
In der Funktion GROUP_CONCAT können Sie also Folgendes sehen:
- col_name: Dies ist die Spalte, mit der Sie verketten möchten. Es gibt eine optionale DISTINCT-Klausel, um zu vermeiden, dass sich Werte wiederholen.
- SORTIEREN NACH: Die ORDER BY-Klausel wird verwendet, um die Reihenfolge innerhalb der verketteten Liste anzugeben und ist optional.
- SEPARATOR: Dies ist wiederum eine optionale Klausel, mit der ein benutzerdefiniertes Trennzeichen zwischen den verketteten Werten definiert werden kann. Standardmäßig ist Komma (,) das Trennzeichen.
Beispiele für MySQL GROUP_CONCAT
Nehmen wir im obigen Beispiel für die Schülertabelle an, wir möchten Hier finden Sie eine Liste der verketteten Abteilungen .
SELECT GROUP_CONCAT(department) as departments FROM student //Output ENGINEERING,ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
In der obigen Abfrage
- Die Ausgabe enthält eine durch Kommas getrennte Liste aller Abteilungen, die in der Abteilungsspalte verfügbar sind.
- Es gibt auch sich wiederholende Werte ( Zum Beispiel, ENGINEERING), da wir keine DISTINCT-Klausel angegeben haben.
Versuchen wir dasselbe Beispiel mit der DISTINCT-Klausel:
SELECT GROUP_CONCAT(DISTINCT department) as departments FROM student //Output ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
Dies würde nur die unterschiedlichen Werte der Abteilungsspalte zurückgeben.
Fügen Sie nun ein benutzerdefiniertes Trennzeichen als '|' - und ORDER BY-Klausel hinzu, damit die Abteilungsnamen in aufsteigender Reihenfolge sortiert werden
SELECT GROUP_CONCAT(DISTINCT department separator ' | ') as departments FROM student //Output ACCOUNTING | ENGINEERING | HUMAN RESOURCES | TRAINEE
Also, in der obigen Abfrage,
- Abteilungsnamen werden in aufsteigender Reihenfolge sortiert.
- Es werden keine sich wiederholenden Werte zurückgegeben.
- Das Trennzeichen wird von ',' in '| geändert „.
Mal sehen Ein weiteres Beispiel, um die verketteten Werte der Studenten in jeder Abteilung aufzulisten.
Hier möchten wir nicht so UNTERSCHIEDLICH sein, wie 2 Studenten in einer Abteilung den gleichen Namen haben könnten.
SELECT department, GROUP_CONCAT(fname ORDER BY fname ASC SEPARATOR ' | ') AS students FROM student GROUP BY department
// Ausgabe
Abteilung | Studenten |
---|---|
BUCHHALTUNG | Abhishek |
MASCHINENBAU | Amit | Darren |
HUMANRESSOURCEN | Steven |
AUSZUBILDENDER | Kartik |
CONCAT und GROUP_CONCAT kombinieren
Nehmen wir im obigen Beispiel an, wir möchten die CONCATENATED-Werte für Name und Nachname zusammen mit jeder Abteilung anzeigen.
Um dies zu erreichen, können wir CONCAT im Befehl GROUP_CONCAT verwenden.
Lassen Sie uns dies unten in Aktion sehen:
SELECT department, GROUP_CONCAT(CONCAT(fname, ' ', lname) order by fname asc SEPARATOR ' | ') as students from student group by department
//Ausgabe
Abteilung | Studenten |
---|---|
BUCHHALTUNG | Abhishek Kumar |
MASCHINENBAU | Amit Singh | Darren Still |
HUMANRESSOURCEN | Steven Johnson |
AUSZUBILDENDER | Kartik Shamungam |
Umgang mit NULL-Werten mit CONCAT
CONCAT erwartet String-Argumente und gibt die Ausgabe als String zurück.
Wenn eine Eingabe für die CONCAT-Funktion NULL ist, ist die Ausgabe ebenfalls NULL.
SELECT CONCAT('string1','string2', NULL); //Output NULL
Um NULL-Werte zu verarbeiten, können Sie eine ifNull-Anweisung in der CONCAT-Funktion verwenden, die im Fall des NULL-Werts aus der Spalte einen Standard- oder Leerwert sicherstellt.
Angenommen, wir haben 2 Strings und 1 NULL-Wert für CONCAT, wie im obigen Beispiel.
SELECT CONCAT('string1','string2', ifNull(NULL,'hello')); //Output string1string2hello
In der obigen Abfrage haben wir eine ifNull-Funktion hinzugefügt, die den NULL-Wert umgibt (oder eine Spalte, die NULL sein könnte). Wenn die NULL-Übereinstimmung erfolgreich ist, wird 'Hallo' zurückgegeben, andernfalls der tatsächliche Spaltenwert.
In der Ausgabe sehen Sie also, dass für die NULL-Zeichenfolge 'Hallo' gedruckt wird.
Häufig gestellte Fragen
F # 1) Wie füge ich Spalten in MySQL zusammen?
Antworten: MySQL bietet eine CONCAT-Funktion zum Kombinieren oder Zusammenführen von zwei oder mehr Spalten aus einer oder mehreren Tabellen und zum Zurückgeben der zusammengeführten Werte in der Ausgabe.
F # 2) Wo und wann muss ich die concat-Methode in MySQL verwenden?
Antworten: Die CONCAT-Methode wird im Allgemeinen für die Anzeige von Abfrageergebnissen verwendet, bei denen Sie zwei oder mehr Spalten verbinden und als einzelne Spalte darstellen möchten.
Zum Beispiel, Angenommen, Sie haben eine Tabelle, die den Vor- und Nachnamen als separate Spalten enthält, und Sie möchten sie als einzelne Entität mit dem Namen fullName anzeigen. Dann können Sie die CONCAT-Funktion verwenden, um die Werte der Vor- und Nachnamenspalte zusammenzuführen und zusammen anzuzeigen als einzelne Spalte.
F # 3) Was ist MySQL GROUP_CONCAT?
Antworten: Ähnlich wie bei CONCAT wird MySQL GROUP_CONCAT auch zum Verketten von Werten in einer Tabelle verwendet. Der Unterschied besteht darin, dass mit CONCAT Werte über Spalten hinweg kombiniert werden. Mit GROUP_CONCAT können Sie Werte über Zeilen hinweg kombinieren.
Es ist auch wichtig zu beachten, dass sowohl GROUP_CONCAT als auch CONCAT kombiniert werden können, um die gewünschten Ergebnisse zurückzugeben.
GROUP_CONCAT wird im Allgemeinen in Szenarien verwendet, in denen Sie Werte gruppenübergreifend gruppieren oder kombinieren möchten. Zum Beispiel - Sie haben eine Produkttabelle mit Produktname und Kategorie und möchten alle Produkte einer bestimmten Kategorie als durch Kommas getrennte Werte auflisten. Dann können Sie GROUP_CONCAT verwenden.
Abfrage:
SELECT categoryName, GROUP_CONCAT(itemName) AS itemList FROM products GROUP BY categoryName
F # 4) Wie kann ich mit dem Befehl CONCAT ein Trennzeichen angeben?
Antworten: Mit CONCAT können Sie das Trennzeichen als separate Zeichenfolge angeben, die verkettet werden soll.
Zum Beispiel: Angenommen, Sie möchten '|' als Trennzeichen verwenden, dann können Sie im Befehl CONCAT diese Zeichenfolge zwischen den zu verkettenden Spaltennamen angeben.
SELECT CONCAT(fname, '| ', lname) as fullName from student
F # 5) Was ist der Unterschied zwischen CONCAT- und CONCAT_WS-Befehlen?
Antworten: CONCAT_WS ist eine weitere von MySQL bereitgestellte Variante von CONCAT, mit der ein Benutzer ein Trennzeichen für die zu verkettenden Spalten angeben kann.
Dies wird CONCAT vorgezogen, wenn Sie mehr Spalten zusammenführen und für alle verketteten Spalten dasselbe Trennzeichen verwenden möchten.
Beispiel: Angenommen, es gibt einen Tabellenschüler mit den Feldern fname, lname und address.
Jetzt wollen wir alle diese drei Felder verketten und durch '|' trennen.
Verwenden von CONCAT müssen wir das Trennzeichen als separate Zeichenfolge angeben, die verkettet werden soll.
SELECT CONCAT(fname, '|', lname, '|', address) as mergedColumn from student
Während mit CONCAT_WS Sie müssten das Trennzeichen nur einmal angeben.
SELECT CONCAT_WS('|', fname, lname, address) as mergedColumn from student
Fazit
In diesem Tutorial haben wir die MySQL CONCAT-Funktion und ihre Verwendung kennengelernt. Diese Funktion ist im Allgemeinen sehr hilfreich, wenn Abfrageergebnisse zum Zusammenführen von Werten mit verschiedenen Spalten angezeigt werden.
Wir haben auch zwei verschiedene Varianten der CONCAT-Funktion kennengelernt - eine verkettet mit einem Trennzeichen mithilfe von CONCAT_WS und eine andere verknüpft Werte von Zeilen mit der MySQL GROUP_CONCAT-Funktion.
Literatur-Empfehlungen
- MySQL JOIN Tutorial: Inner, Außen, Kreuz, Links, Rechts und Selbst
- MySQL UNION - Umfassendes Tutorial mit Union-Beispielen
- MySQL-Datumsformat und Zeitstempelfunktionen mit Beispielen
- MySQL Insert Into Table - Syntax und Beispiele für Insert-Anweisungen
- Tutorial zur MySQL-Update-Anweisung - Syntax und Beispiele für Update-Abfragen
- MySQL Create View Tutorial mit Codebeispielen
- C # -Funktionen / Methoden-Tutorial mit Codebeispielen