So extrahieren Sie Zeichenfolgenelemente aus nicht festen Positionen in MySQL

So extrahieren Sie Zeichenfolgenelemente aus nicht festen Positionen in MySQL

Vorwort

Hinweis: Die Testdatenbankversion ist MySQL 8.0

Testdaten:

Tabelle erstellen zqs(id int,str varchar(1000));

in zqs(id,str) Werte einfügen (1,'【JD.com】abc【China Telecom】');
in zqs(id,str) Werte einfügen (1,'【JD.com】abc【China Telecom】def');
in zqs(id,str) Werte einfügen (1, '****【JD.com】abc【China Telecom】def');
in zqs(id,str) Werte einfügen (1,'****【JD.com】abc');
in zqs(id,str) Werte einfügen (1, '【JD.com】abc【China Telecom】【China Unicom】');

1. Nachfrage

Wir stoßen häufig auf ähnliche Anforderungen wie bei SMS und müssen SMS-Tag-Informationen extrahieren, es können jedoch mehrere SMS-Tags vorhanden sein.

Dieses Beispiel geht davon aus, dass höchstens 3 Tags vorhanden sind und soll wie folgt ausgegeben werden:

mysql> wähle * aus zqs;
±-----±----------------------------------------------------+
| Ich würde | str |
±-----±----------------------------------------------------+
| 1 | 【JD.com】abc【China Telecom】 |
| 1 | 【JD.com】abc【China Telecom】def |
| 1 | ****【JD.com】abc【China Telecom】def |
| 1 | ****【JD.com】abc |
| 1 | 【JD.com】abc【China Telecom】【China Unicom】 |
±-----±----------------------------------------------------+

Die erforderliche Ausgabe ist wie folgt:

±--------------±--------------------±--------------------+
| erster_Wert | erster_Wert2 | erster_Wert3 |
±--------------±--------------------±--------------------+
| 【JD.com】 | 【China Telecom】 | |
| 【JD.com】 | 【China Telecom】 | |
| 【JD.com】 | 【China Telecom】 | |
| 【JD.com】 | | |
| 【JD.com】 | 【China Telecom】 | 【China Unicom】 |
±--------------±--------------------±--------------------+

2. Lösung

Die Zeichenfolgenabfangfunktionen substr und instr von Oracle können zusammen verwendet werden, allerdings ist die instr-Funktion von MySQL schwächer als die instr-Funktion von Oracle.

Zu diesem Zeitpunkt müssen Sie die MySQL-regulären Ausdrücke regexp_instr und substr verwenden.

wähle Teilstrich(strich,
   regexp_instr(str,'【',1,1),
   regexp_instr(str,'】',1,1) - regexp_instr(str,'【',1,1) + 1 ) erster_Wert, 
  substr(str,
   regexp_instr(str,'【',1,2),
   regexp_instr(str,'】',1,2) - regexp_instr(str,'【',1,2) + 1) first_va2, 
  substr(str,
   regexp_instr(str,'【',1,3),
   regexp_instr(str,'】',1,3) - regexp_instr(str,'【',1,3) + 1) first_va3
 von zqs;

Testprotokoll:

mysql> wähle Teilzeichen (Zeichenfolge,
 -> regexp_instr(str,'【',1,1),
 -> regexp_instr(str,'】',1,1) - regexp_instr(str,'【',1,1) + 1 ) erster_Wert,
 -> substr(str,
 -> regexp_instr(str,'【',1,2),
 -> regexp_instr(str,'】',1,2) - regexp_instr(str,'【',1,2) + 1) first_va2,
 -> substr(str,
 -> regexp_instr(str,'【',1,3),
 -> regexp_instr(str,'】',1,3) - regexp_instr(str,'【',1,3) + 1) first_va3
 -> von zqs;
+--------------+--------------------+--------------------+
| erster_Wert | erster_Wert2 | erster_Wert3 |
+--------------+--------------------+--------------------+
| 【JD.com】 | 【China Telecom】 | |
| 【JD.com】 | 【China Telecom】 | |
| 【JD.com】 | 【China Telecom】 | |
| 【JD.com】 | | |
| 【JD.com】 | 【China Telecom】 | 【China Unicom】 |
+--------------+--------------------+--------------------+
5 Zeilen im Satz (0,00 Sek.)

Zusammenfassen

Dies ist das Ende dieses Artikels zum Extrahieren von Zeichenfolgenelementen aus nicht festgelegten Positionen in MySQL. Weitere Informationen zum Extrahieren von Zeichenfolgenelementen aus MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

<<:  Vue implementiert einen einfachen Laufschrifteffekt

>>:  Beispielcode zur Implementierung der Ellipsenbahnrotation mit CSS3

Artikel empfehlen

Einführung in die schnelle Docker-Bereitstellung eines SpringBoot-Projekts

1. Docker installieren Öffnen Sie zunächst die Li...

Standardzusammenfassung zur Analyse der Leistung einer SQL-Anweisung

In diesem Artikel wird die Verwendung von „Explai...

Lösen Sie das Matching-Problem in CSS

Problembeschreibung Wie wir alle wissen, wird bei...

MySQL-Joinpufferprinzip

Inhaltsverzeichnis 1. MySQL-Joinpuffer 2. JoinBuf...

Der Unterschied zwischen useEffect und useLayoutEffect in React

Inhaltsverzeichnis Voraussetzungen Effekt verwend...

Gründe und Lösungen für das Nicht-Wirksamwerden der MySQL-SQL-Modus-Änderung

Inhaltsverzeichnis Vorwort Szenariosimulation Zus...

So verwenden Sie ein HTML-Formular mit mehreren Beispielen

Neun einfache Beispiele analysieren die Verwendun...

Grundlegendes zum MySQL-Abfrageoptimierungsprozess

Inhaltsverzeichnis Parser und Präprozessoren Abfr...

Beispielcode zum Bereitstellen von ELK mit Docker-Compose

Umfeld Host-IP 192.168.0.9 Docker-Version 19.03.2...

HTML-, CSS- und JS-Kompatibilitätsbaum (IE, Firefox, Chrome)

Was ist ein Baum im Webdesign? Einfach ausgedrückt...

Grafisches Tutorial zur Installation und Konfiguration von mysql5.7.20 (Mac)

Grafisches Tutorial zur Installation und Konfigur...

So verhindern Sie, dass sich vsftpd-Benutzer über SSH anmelden

Vorwort vsftp ist eine benutzerfreundliche und si...

Detaillierte Erklärung der React-Komponentenkommunikation

Inhaltsverzeichnis Einführung in die Komponentenk...