Detaillierte Erläuterung der Verwendung der MySQL-Verkettungsfunktion CONCAT

Detaillierte Erläuterung der Verwendung der MySQL-Verkettungsfunktion CONCAT

In den vorherigen Artikeln wurden die Ersetzungsfunktion (Replace) und die Segmentierungsfunktion (SubString) in MySQL vorgestellt. Heute werfen wir einen Blick auf die professionelle MySQL-Funktion „String-Verkettung“: concat. Wie immer gilt: Wenn Sie gute Vorschläge und Ideen haben, schreiben Sie sie bitte in die Kommentare. Wenn ich bei der Arbeit faulenze, werde ich die Erfahrungen mit Ihnen allen teilen~

1. Verschiedene Verwendungen der Concat-Funktion

1-1. Funktion: concat(str1,str2,…)

Die Concat-Funktion wird im Allgemeinen in der SELECT-Abfragesyntax verwendet, um den zurückgegebenen Feldinhalt zu ändern. Beispielsweise gibt es eine LOL-Heldeninformationstabelle wie folgt

mysql> wähle * aus `LOL`;
+----+---------------+--------------+-----------+
| ID | Heldentitel | Heldenname | Preis |
+----+---------------+--------------+-----------+
| 1 | DBlade Schatten | Talon | 6300 |
| 2 | X-Swift-Scout | Teemo | 6300 |
| 3 | G Strahlende Dame | Lux | 1350 |
| 4 | F Uhrwerkgeist | Orianna | 6300 |
| 5 | Z Oberste Faust | Lee Sin | 6300 |
| 6 | W: Schwertmeister | Einfach | 450 |
| 7 | J Schneller Klingenmeister | Yasuo | 450 |
+----+---------------+--------------+-----------+
7 Zeilen im Satz (0,00 Sek.)

Ich muss eine Spalte zurückgeben: Heldentitel – Heldennamedaten. Hier wird die Concat-Funktion wie folgt verwendet:

SELECT CONCAT(hero_title,' - ',hero_name) als vollständiger Name, Preis von `LOL`;
mysql> SELECT CONCAT(hero_title,' - ',hero_name) als vollständiger Name, Preis von `LOL`;
+------------------------------+----------+
| vollständiger_Name | Preis |
+------------------------------+----------+
| DBlade Shadow - Talon | 6300 |
| X-Swift-Scout – Teemo | 6300 |
| G Strahlende Dame - Lux | 1350 |
| F Uhrwerkgeist - Orianna | 6300 |
| Z Oberste Fist - Lee Sin | 6300 |
| W Wujuejiansheng – Einfach | 450 |
| J Schneller Schwertkämpfer – Yasuo | 450 |
+------------------------------+----------+
7 Zeilen im Satz (0,00 Sek.)

Wenn in den gespleißten Parametern NULL vorhanden ist, wird NULL zurückgegeben; wie folgt:

SELECT CONCAT(hero_title,NULL,hero_name) als vollständiger Name, Preis von „LOL“;
mysql> SELECT CONCAT(hero_title,'NULL',hero_name) als vollständiger Name, Preis von `LOL`;
+-------------------------------+----------+
| vollständiger_Name | Preis |
+-------------------------------+----------+
| DBlade Shadow NULLTalon | 6300 |
| X-Swift Scout NULL Teemo | 6300 |
| G Radiant Lady NULL Lux | 1350 |
| F Uhrwerkgeist NULL Orianna | 6300 |
| Z Supreme Fist NULL Lee Sin | 6300 |
| W NULL Yi | 450 |
| J Schneller Schwertmeister NULL Yasuo | 450 |
+-------------------------------+----------+
7 Zeilen im Satz (0,00 Sek.) 

Bildbeschreibung hier einfügen

Entschuldigung, das Obige hat mein Bruder geschrieben, richtig ist Folgendes:

mysql> SELECT CONCAT(hero_title,NULL,hero_name) als vollständiger Name, Preis von „LOL“;
+--------------+------+
| vollständiger_Name | Preis |
+--------------+------+
| NULL | 6300 |
| NULL | 6300 |
| NULL | 1350 |
| NULL | 6300 |
| NULL | 6300 |
| NULL | 450 |
| NULL | 450 |
+--------------+------+
7 Zeilen im Satz (0,00 Sek.)

1-2. Funktion: concat_ws(separator,str1,str2,…)

Vollständiger Name der Funktion CONCAT_WS(): CONCAT mit Trennzeichen. Dabei handelt es sich um eine Sonderform von CONCAT(). Der erste Parameter (Trennzeichen) ist das Trennzeichen für die weiteren Parameter. Die Position des Trennzeichens liegt zwischen den beiden zu verkettenden Zeichenfolgen.分隔符可以是一個字符串,也可以是其它字段參數。

Es ist zu beachten, dass:

如果分隔符為NULL,則結果為NULL;但如果分隔符后面的參數為NULL,只會被直接忽略掉,而不會導致結果為NULL。

OK, verwenden wir trotzdem die obige LOL-Tabelle, verketten die Felder und trennen sie durch Kommas:

Wählen Sie concat_ws(',', Heldentitel, Heldenname, Preis) als vollständigen Namen, Preis von „LOL“;
mysql> wähle concat_ws(',',Hero_Title,Hero_Name,Preis) als vollständigen Namen, Preis von „LOL“;
+---------------------------------+--------+
| vollständiger_Name | Preis |
+---------------------------------+--------+
| DBlade Shadow,Talon,6300 | 6300 |
| X-Swift Scout, Teemo, 6300 | 6300 |
| G Strahlende Dame, Lux, 1350 | 1350 |
| F Uhrwerkgeist, Orianna, 6300 | 6300 |
| Z Supreme Fist, Lee Sin, 6300 | 6300 |
| W Wuju-Schwertmeister, einfach, 450 | 450 |
| J Schneller Schwertkämpfer, Yasuo, 450 | 450 |
+---------------------------------+--------+
7 Zeilen im Satz (0,00 Sek.)

Wenn der Verkettungsparameter nach dem Trennzeichen NULL ist, wird er direkt ignoriert und wirkt sich wie folgt nicht auf das Gesamtergebnis aus:

Wählen Sie concat_ws(',',hero_title,NULL,hero_name) als vollständigen Namen, Preis von „LOL“;
mysql> wähle concat_ws(',',hero_title,NULL,hero_name) als vollständigen Namen, Preis von „LOL“;
+----------------------------+----------+
| vollständiger_Name | Preis |
+----------------------------+----------+
| DBlade Shadow, Talon | 6300 |
| X-Swift-Scout, Teemo | 6300 |
| G Strahlende Dame, Lux | 1350 |
| F Uhrwerk-Genie, Orianna | 6300 |
| Z Supreme Fist, Lee Sin | 6300 |
| W Wuju-Schwertmeister, einfach | 450 |
| J Schneller Schwertkämpfer, Yasuo | 450 |
+----------------------------+----------+
7 Zeilen im Satz (0,00 Sek.)

Wenn das Trennzeichen NULL ist, gibt das Ergebnis wie folgt NULL zurück:

Wählen Sie concat_ws(NULL, Heldentitel, Heldenname, Preis) als vollständigen Namen, Preis von „LOL“;
mysql> wähle concat_ws(NULL,hero_title,hero_name,price) als vollständigen Namen, Preis von „LOL“;
+--------------+------+
| vollständiger_Name | Preis |
+--------------+------+
| NULL | 6300 |
| NULL | 6300 |
| NULL | 1350 |
| NULL | 6300 |
| NULL | 6300 |
| NULL | 450 |
| NULL | 450 |
+--------------+------+
7 Zeilen im Satz (0,00 Sek.)

1-3. Funktion: group_concat(expr)

group_concat ( [DISTINCT] Feldname [Sortieren nach Sortierfeld ASC/DESC] [Trennzeichen 'Trennzeichen'] )

Die Funktion group_concat wird normalerweise in Abfrageanweisungen mit „group by“ verwendet. group_concat ist im Allgemeinen im Abfrage-Rückgabeergebnisfeld enthalten.

Sieht die Formel der Funktion group_concat kompliziert aus? Schauen wir uns die obige Formel an. Die Klammern [] sind optional und geben an, ob sie verwendet werden können oder nicht.

  • 1. [DISTINCT] : Unterstützt die Deduplizierung von Spleißparametern;
  • 2. [Order by] : Die verketteten Parameter unterstützen die Sortierfunktion;
  • 3. [Separator] : Sie sind damit sehr vertraut. Es unterstützt die Anpassung des „Trennzeichens“. Wenn Sie es nicht festlegen, ist standardmäßig kein Trennzeichen vorhanden.

Okay, kommen wir zur spaßigen Testphase. Lasst uns diese LOL-Tabelle noch einmal verwenden, fragt nicht warum. Vielleicht ist das Jugend! Ich erinnere mich noch an das Jahr, als wir die ganze Nacht im Fünferteam spielten und während des großen Drachenkampfs im Internetcafé der Strom ausfiel ...

Bildbeschreibung hier einfügen

Wieder abseits vom Thema. . Verzeihung.

mysql> wähle * aus `LOL`;
+----+---------------+--------------+-----------+
| ID | Heldentitel | Heldenname | Preis |
+----+---------------+--------------+-----------+
| 1 | DBlade Schatten | Talon | 6300 |
| 2 | X-Swift-Scout | Teemo | 6300 |
| 3 | G Strahlende Dame | Lux | 1350 |
| 4 | F Uhrwerkgeist | Orianna | 6300 |
| 5 | Z Oberste Faust | Lee Sin | 6300 |
| 6 | W: Schwertmeister | Einfach | 450 |
| 7 | J Schneller Klingenmeister | Yasuo | 450 |
+----+---------------+--------------+-----------+
7 Zeilen im Satz (0,00 Sek.)

Beispielsweise müssen wir Helden in unterschiedlichen Preisklassen unterscheiden. Wenn wir group_concat nicht verwenden, müssen wir möglicherweise order by verwenden, um sie zu unterscheiden.

Wählen Sie * aus „LOL“, sortiert nach Preis absteigend;
mysql> wähle * aus „LOL“, sortiere nach Preis absteigend;
+----+---------------+--------------+-----------+
| ID | Heldentitel | Heldenname | Preis |
+----+---------------+--------------+-----------+
| 1 | DBlade Schatten | Talon | 6300 |
| 2 | X-Swift-Scout | Teemo | 6300 |
| 4 | F Uhrwerkgeist | Orianna | 6300 |
| 5 | Z Oberste Faust | Lee Sin | 6300 |
| 3 | G Strahlende Dame | Lux | 1350 |
| 6 | W: Schwertmeister | Einfach | 450 |
| 7 | J Schneller Klingenmeister | Yasuo | 450 |
+----+--------------+--------------+----------+
7 Zeilen im Satz (0,00 Sek.)

Aber das ist nicht sehr intuitiv. Ich möchte jede Zeile sehen. Was soll ich tun?

SELECT GROUP_CONCAT(hero_title,' - ',hero_name Trennzeichen ',' ) als vollständiger Name, Preis 
 von „LOL“ GROUP BY Preis ORDER BY Preis absteigend;

Derzeit kann Ihnen die Funktion GROUP_CONCAT problemlos dabei helfen, dieses Problem zu lösen. Schauen Sie, ist es nicht bequem?

Hinweis : Hier verknüpfe ich die drei Parameter (hero_title, ‚-‘, hero_name), setze das Trennzeichen auf ‚,‘, gruppe nach Preis und sortiere nach Preis. Die Wirkung ist wie folgt

mysql> SELECT GROUP_CONCAT(hero_title,' - ',hero_name Trennzeichen ',' ) als vollständiger Name, Preis von `LOL` GROUP BY Preis ORDER BY Preis absteigend;
+------------------------------------------------------------------------+----------+
| vollständiger_Name | Preis |
+------------------------------------------------------------------------+----------+
| D Blades Shadow – Talon, X Swift Scout – Teemo, F Clockwork – Orianna, Z High Fist – Lee Sin | 6300 |
| G Strahlende Dame - Lux | 1350 |
| W Wujuejiansheng – Yi, J Schneller Schwertkämpfer – Yasuo | 450 |
+------------------------------------------------------------------------+----------+
3 Zeilen im Satz (0,00 Sek.)

Wenn Sie nach Preis von klein nach groß sortieren möchten, müssen Sie nur das äußere ORDER BY wie folgt steuern:

SELECT GROUP_CONCAT(hero_title,' - ',hero_name Trennzeichen ',' ) als vollständiger Name, Preis 
  von `LOL` GROUP BY Preis ORDER BY Preis aufsteigend;
mysql> SELECT GROUP_CONCAT(hero_title,' - ',hero_name Trennzeichen ',' ) als vollständiger Name, Preis von `LOL` GROUP BY Preis ORDER BY Preis aufsteigend;
+-------------------------------------------------------------------------+-------+
| vollständiger_Name | Preis |
+-------------------------------------------------------------------------+-------+
| W Wujuejiansheng – Yi, J Schneller Schwertkämpfer – Yasuo | 450 |
| G Strahlende Dame - Lux | 1350 |
| D Blades Shadow – Talon, X Swift Scout – Teemo, F Clockwork – Orianna, Z High Fist – Lee Sin | 6300 |
+-------------------------------------------------------------------------+----------+
3 Zeilen im Satz (0,00 Sek.)

Wie verwenden Sie also die Sortierung nach Reihenfolge in der Funktion GROUP_CONCAT? Es wird zum Sortieren der gespleißten Felder verwendet, z. B. zum Sortieren und Spleißen gemäß hero_title, wie folgt:

SELECT GROUP_CONCAT(hero_title,' - ',hero_name order by hero_title Separator ',' ) als vollständiger Name, Preis von „LOL“ GROUP BY Preis ORDER BY Preis aufsteigend;
mysql> SELECT GROUP_CONCAT(hero_title,' - ',hero_name order by hero_title Trennzeichen ',' ) als vollständiger Name, Preis von `LOL` GROUP BY Preis ORDER BY Preis aufsteigend;
+-------------------------------------------------------------------------+-------+
| vollständiger_Name | Preis |
+-------------------------------------------------------------------------+-------+
| J Schneller Klingenmeister – Yasuo, W Infinity Blade Master – Yi | 450 |
| G Strahlende Dame - Lux | 1350 |
| D Klingenschatten – Talon, F Uhrwerkgeist – Orianna, X Schneller Späher – Teemo, Z Höchste Faust – Lee Sin | 6300 |
+-------------------------------------------------------------------------+-------+
3 Zeilen im Satz (0,00 Sek.)

Nun, man kann sehen, dass die Concat-Funktion in MySQL immer noch sehr nützlich ist. Ich hoffe, Sie werden daran denken, wenn Sie ähnliche Bedürfnisse oder Verwirrungen haben! Oder Sie finden diesen Blog, der Ihnen weiterhilft!

Dies ist das Ende dieses Artikels mit der detaillierten Erklärung zur Verwendung der MySQL-Verkettungsfunktion CONCAT. Weitere verwandte Inhalte zur MySQL-Verkettungsfunktion CONCAT finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Effizienzvergleichs zweier Methoden zur Stapelaktualisierung von Daten in Mybatis
  • Detaillierte Erklärung zur Verwendung der @TableField-Annotation in MybatisPlus
  • Anweisungen zur Verwendung von Bind-Tags und Concat in Mybatis

<<:  Der Inhalt der Tabelle in HTML wird horizontal und vertikal in der Mitte angezeigt

>>:  So lösen Sie das Problem unzureichender Berechtigungen beim Benutzerwechsel im Docker-Container

Artikel empfehlen

Einführung in die Verwendung von exists und except in SQL Server

Inhaltsverzeichnis 1. existiert 1.1 Beschreibung ...

Beispiele für die Verwendung von MySQL-Abdeckungsindizes

Was ist ein Deckungsindex? Das Erstellen eines In...

Allgemeine Tags in XHTML

Was sind XHTML-Tags? XHTML-Tag-Elemente sind die ...

Grundlegendes Lernen und Erfahrungsaustausch zu MySQL-Transaktionen

Eine Transaktion ist eine logische Gruppe von Ope...

So verwenden Sie Bind zum Einrichten eines DNS-Servers

DNS (Domain Name Server) ist ein Server, der Domä...

Konvertieren Sie ausgeschnittene PSD-Bilder in das Div+CSS-Format

Beispiel für das Zuschneiden einer Webseite von P...