MySQL-String-Splitting-Beispiel (String-Extraktion ohne Trennzeichen)

MySQL-String-Splitting-Beispiel (String-Extraktion ohne Trennzeichen)

String-Extraktion ohne Trennzeichen

Fragenanforderungen

Feldwert in der Datenbank:

Implementierungseffekt: Eine Datenzeile muss in mehrere Zeilen umgewandelt werden

Implementiertes SQL

Wählen Sie links (Substring ('P1111', Hilfethema-ID + 1), 1) als Nummer aus mysql.help_topic, wobei Hilfethema-ID < Länge ('P1111');

Beteiligte Wissenspunkte

1. String-Abfangen: SUBSTRING(str,pos)

1. Parameterbeschreibung

Parametername erklären
str Die abgefangene Zeichenfolge
Kassensystem An welcher Position möchten Sie mit dem Extrahieren beginnen? Wenn „pos“ eine positive Zahl ist, bedeutet dies, dass Sie an der posth-Position vom Anfang der Zeichenfolge beginnen und bis zum Ende fortfahren. Wenn „pos“ eine negative Zahl ist, bedeutet dies, dass Sie an der posth-Position vom Ende der Zeichenfolge beginnen und bis zum Ende fortfahren.

2. Beispiele

(I) Holen Sie sich die Zeichenfolge „P1111“ ab dem zweiten Zeichen

TEILZEICHENFOLGE('P1111',2)

(II) Holen Sie sich die Zeichenfolge „P1111“, beginnend mit dem vorletzten Zeichen

TEILZEICHENFOLGE('P1111',-2)

2. Extrahieren Sie den String von links: LEFT(str,len)

1. Parameterbeschreibung

Parametername erklären
str Die abgefangene Zeichenfolge
len Eine positive Ganzzahl, die den Wert der Zeichenfolge von der äußersten linken bis zur längsten Position darstellt.

2. Beispiele

(I) Holen Sie sich die 3 Zeichen ganz links aus der Zeichenfolge „P1111“.

LINKS('P1111',3)

Tipp:

Es gibt eine Funktion LEFT(str,len), die den String von links abfängt, und natürlich gibt es auch eine RIGHT(str,len), die den String von rechts abfängt. Die Prinzipien der beiden Funktionen sind gleich, der Unterschied besteht darin, ob der String von links oder von rechts abgefangen wird.

SQL-Analyse

Wählen Sie links (Substring ('P1111', Hilfethema-ID + 1), 1) als Nummer aus mysql.help_topic, wobei Hilfethema-ID < Länge ('P1111');

Auch hier verwenden wir die help_topic_id der help_topic-Tabelle der MySQL-Bibliothek als Variable, da die help_topic_id auto-inkrementiert. Natürlich können wir auch die Auto-Increment-Felder anderer Tabellen als Hilfsmittel verwenden.

Bitte beachten Sie MySQL - String Splitting (I)

Implementierungsschritte

Schritt 1:

Ermitteln Sie die Länge der Zeichenfolge „P1111“ und verwenden Sie help_topic_id, um die Durchquerung der Zeichenfolge „P1111“ dynamisch zu simulieren.

Hilfethema-ID < LENGTH('P1111')

Schritt 2:

Verwenden Sie die Funktion SUBSTRING(str,pos) und help_topic_id, um die Zeichenfolge „P1111“ zu extrahieren. (Der Grund für „help_topic_id+1“ ist hier, dass help_topic_id bei 0 beginnt und die Funktion SUBSTRING den String an der ersten Position abfangen muss)

SUBSTRING('P1111', Hilfethema-ID+1)

Zum Beispiel:

Wenn help_topic_id = 0, ist die erhaltene Zeichenfolge = P1111

Wenn help_topic_id = 1, ist die erhaltene Zeichenfolge = 1111

…(und so weiter)

Schritt 3: Basierend auf der Implementierung von Schritt 2 verwenden Sie die Funktion LEFT(str,len), um in Schritt 2 das erste Zeichen von links zu erhalten.

LINKS(TEILSTRING('P1111',Hilfethema-ID+1),1)

Zum Beispiel:

Gemäß Schritt 2 ist die erhaltene Zeichenfolge P1111, wenn help_topic_id = 0 ist, und die in Schritt 3 erhaltene Zeichenfolge ist P

Laut Schritt 2 ist die erhaltene Zeichenfolge 1111, wenn help_topic_id = 1 ist, und die in Schritt 3 erhaltene Zeichenfolge ist 1.

…(und so weiter)

Abschließend wurden folgende Effekte erzielt

Hinweis: Informationen zum Aufteilen von Zeichenfolgen mit Trennzeichen finden Sie unter MySQL – Zeichenfolgenaufteilung (Abfangen von Zeichenfolgen mit Trennzeichen).

Ergänzung: mysql teilt den gefundenen String auf_Mysql split string query

Ich werde nicht viel Unsinn erzählen, schauen wir uns einfach den Code an ~

TRENNUNGSZEICHEN $$
DROP-FUNKTION, WENN `tms1`.`GetClassName` EXISTIERT $$
ERSTELLEN SIE DIE FUNKTION `GetClassName`(f_string VARCHAR(15000)) GIBT varchar(15000) ZURÜCK
BEGINNEN
/* Überprüfe die erste Position der Zeichenfolge, die , enthält*/
DECLARE THE_CNT INT(15) DEFAULT 1;
/* Klassennummer */
deklariere classId varchar(20) als Standard '';
/* Zurückgegebener Klassenname */
DECLARE-Ergebnis varchar (15000) DEFAULT null;
/* Klassenname */
DECLARE Klassenname varchar(50) DEFAULT '';
/* Die erste Position der Zeichenfolge, die ,*/ enthält
setze THE_CNT = LOCATE(',',f_string);
/* Prüfen, ob die erste Position der Zeichenfolge enthält, existiert*/
während (THE_CNT >= 0) tun
/*, wenn der Standort nicht existiert*/
wenn THE_CNT = 0 dann
/* Festlegen der Klassennummer*/
setze Klassen-ID = f_string;
anders
/* Klassennummer aus dem String abrufen */
setze Klassen-Id = SUBSTRING_INDEX(SUBSTRING_INDEX(f_string, ',', 1), ',', -1);
Ende, wenn;
/* Den Klassennamen anhand der Klassennummer ermitteln */
select (Wählen Sie den Namen aus der Klasse aus, wobei ID = Klassen-ID) in Klassenname;
/* Gibt die Klassennummernzeichenfolge zurück, wenn sie leer ist*/
wenn das Ergebnis null ist, dann
/* Wenn der Klassenname anhand der Nummer nicht gefunden wird*/
wenn className null ist, dann
/* Setze den Klassennamen auf leer */
setze Klassennamen = ' ';
Ende wenn;
/* Füge den Klassennamen an die Zeichenfolge an */
Setze Ergebnis = Klassenname;
anders
/* Wenn der Klassenname anhand der Nummer nicht gefunden wird*/
wenn className null ist, dann
/* Setze den Klassennamen auf leer */
setze Klassennamen = ' ';
Ende wenn;
/* Füge den Klassennamen an die Zeichenfolge an */
setze Ergebnis = CONCAT(Ergebnis,',',Klassenname);
Ende wenn;
/*, wenn der Standort nicht existiert*/
wenn THE_CNT = 0 dann
/* Ergebnismenge zurückgeben */
Ergebnis zurückgeben;
Ende wenn;
/*Fangt die eingehende Zeichenfolge ab*/
setze f_string = rechts(f_string,Länge(f_string) - THE_CNT);
/* Die erste Position der Zeichenfolge, die ,*/ enthält
setze THE_CNT = LOCATE(',',f_string);
/* Durchquerung beenden */
Ende während;
/* Ergebnismenge zurückgeben */
Ergebnis zurückgeben;
ENDE $$
TRENNUNGSZEICHEN ;

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • MySQL-String-Aufteilungsvorgang (String-Abfangen mit Trennzeichen)
  • MySql-String-Splitting zur Realisierung der Split-Funktion (Feld-Splitting und Spalten-Transfer)

<<:  So schreiben Sie den Stil einer CSS3-Tianzi-Rasterliste

>>:  Organisationsstruktur der Vue-Komponente und Details zur Komponentenregistrierung

Artikel empfehlen

Der Unterschied zwischen ${param} und #{param} in MySQL

Der von ${param} übergebene Parameter wird als Te...

Vue-Handschrift-Ladeanimationsprojekt

Wenn die Seite nicht reagiert, ist die Anzeige de...

Shell-Skripteinstellungen zum Verhindern von Brute-Force-SSH

Das Shell-Skript richtet die Zugriffskontrolle ei...

Fallbeispiel zur TypeScript-Schnittstellendefinition

Die Rolle der Schnittstelle: Schnittstelle, auf E...

MySQL Community Server 5.7.19 Installationshandbuch (detailliert)

Link zum Download der ZIP-Datei auf der offiziell...

Docker erstellt CMS-On-Demand-System mit Player-Funktion

Inhaltsverzeichnis Text 1. Maschine vorbereiten 2...

Zusammenfassung der Wissenspunkte zum Ereignismodul in Node.js

Durch das Studium und die Anwendung von Node wiss...