Mysql teilt Zeichenfolge durch gespeicherte Prozedur in Array auf

Mysql teilt Zeichenfolge durch gespeicherte Prozedur in Array auf

Um einen String in ein Array aufzuteilen, müssen Sie drei MySQL-Funktionen verwenden:

REVERSE(str) Gibt die Zeichenfolge str mit umgekehrter Zeichenreihenfolge zurück.

SUBSTRING_INDEX(str,delim,count)

Gibt die Teilzeichenfolge der Zeichenfolge str nach dem count-ten Vorkommen des Trennzeichens delim zurück. Wenn die Anzahl positiv ist, werden alle Zeichen vom letzten Trennzeichen nach links zurückgegeben (von links gezählt). Wenn die Anzahl negativ ist, werden alle Zeichen vom letzten Trennzeichen nach rechts zurückgegeben (von rechts gezählt).

REPLACE(str,from_str,to_str)

Gibt die Zeichenfolge str zurück, wobei alle Vorkommen der Zeichenfolge from_str durch die Zeichenfolge to_str ersetzt sind.

Die Funktion zum Aufteilen eines Strings in ein Array wird durch die Kombination von drei Funktionen erreicht.

Schreiben Sie zunächst zwei Funktionen

1. Ermitteln Sie die Anzahl aller durch "ein bestimmtes Symbol" getrennten Zeichenfolgen. Der Funktionsinhalt lautet wie folgt

(Kopieren Sie den SQL-Code und führen Sie ihn in Navicat aus)

TRENNUNGSZEICHEN $$
DEFINER ERSTELLEN=`root`@`%` FUNKTION `func_get_split_string_total`(
f_Zeichenfolge varchar(1000),f_Trennzeichen varchar(5)
) gibt int(11) zurück.
BEGINNEN
 -- Holen Sie sich die Gesamtzahl der angegebenen Zeichenfolge.
 gibt 1+(Länge(f_string) - Länge(ersetzen(f_string,f_delimiter,''))); zurück
ENDE$$
TRENNUNGSZEICHEN ;

2. Extrahieren Sie die Zeichenfolge durch Segmentierung

(Kopieren Sie den SQL-Code und führen Sie ihn in Navicat aus)

TRENNUNGSZEICHEN $$
DEFINER ERSTELLEN=`root`@`%` FUNKTION `func_get_split_string`(
f_string varchar(1000),f_delimiter varchar(5),f_order int) gibt varchar(255) CHARSET utf8 zurück
BEGINNEN
 - Holen Sie sich die getrennte Nummer der angegebenen Zeichenfolge.
 Deklariere das Ergebnis varchar(255) als Standard '';
 Ergebnis festlegen = umgekehrt (Teilstring_index (umgekehrt (Teilstring_index (f_string, f_delimiter, f_order)), f_delimiter, 1));
 Ergebnis zurückgeben;
ENDE$$
TRENNUNGSZEICHEN ;

Schreiben Sie dann eine gespeicherte Prozedur, um diese beiden Funktionen zu kombinieren, geben Sie die zu teilende Zeichenfolge und das Trennzeichen ein und geben Sie das Array aus, nachdem es durch ein bestimmtes Symbol geteilt wurde

(Kopieren Sie den SQL-Code und führen Sie ihn in Navicat aus)

TRENNUNGSZEICHEN $$
PROZEDUR ERSTELLEN `sp_print_result`(
 IN f_string varchar(1000), IN f_delimiter varchar(5)
)
BEGINNEN
 - Holen Sie sich die getrennte Zeichenfolge.
 Deklarieren Sie cnt int als Standard 0;
 deklariere i als int default 0;
 setze Anzahl = func_get_split_string_total(f_string,f_delimiter);
 Tabelle löschen, falls vorhanden, tmp_print;
 Erstellen Sie eine temporäre Tabelle tmp_print (Num Int ungleich Null).
 während ich < cnt
 Tun
  setze i = i + 1;
  in tmp_print(num) Werte einfügen (func_get_split_string(f_string,f_delimiter,i));
 Ende während;
 wähle * aus tmp_print;
ENDE$$
TRENNUNGSZEICHEN ;

Geben Sie dann eine zu testende Zeichenfolge ein.

call sp_print_result(“434,123,12,234,123,123”,”,”);

Die Ergebnisse sind wie folgt

The user specified as a definer ('root'@'%') does not exist existiert nicht

Die Lösung lautet wie folgt:

Ausführen: grant all privileges on *.* to root@"%" identified by ".";

Ausführen: flush privileges;

Dadurch wird das Problem gelöst.

Lassen Sie uns abschließend über gespeicherte Prozeduren und MySQL-Funktionen sprechen

Eine gespeicherte Prozedur ist eine Sammlung benutzerdefinierter SQL-Anweisungen, die Aufgaben für bestimmte Tabellen oder andere Objekte beinhalten. Benutzer können gespeicherte Prozeduren aufrufen, während Funktionen normalerweise von der Datenbank definierte Methoden sind, die Parameter empfangen und einen bestimmten Werttyp zurückgeben und keine bestimmten Benutzertabellen beinhalten.

Es gibt mehrere Unterschiede zwischen gespeicherten Prozeduren und Funktionen:

1) Im Allgemeinen sind die von gespeicherten Prozeduren implementierten Funktionen komplexer, während die von Funktionen implementierten Funktionen zielgerichteter sind. Gespeicherte Prozeduren sind leistungsstark und können eine Reihe von Datenbankoperationen ausführen, einschließlich der Änderung von Tabellen. Benutzerdefinierte Funktionen können nicht verwendet werden, um eine Reihe von Operationen auszuführen, die den globalen Datenbankstatus ändern.

2) Gespeicherte Prozeduren können Parameter wie Recordsets zurückgeben, während Funktionen nur Werte oder Tabellenobjekte zurückgeben können. Eine Funktion kann nur eine Variable zurückgeben; eine gespeicherte Prozedur kann mehrere zurückgeben. Die Parameter einer gespeicherten Prozedur können drei Typen haben: IN, OUT und INOUT, während eine Funktion nur vom Typ IN sein kann. Eine gespeicherte Prozedur erfordert bei der Deklaration keinen Rückgabetyp, eine Funktion muss jedoch bei der Deklaration den Rückgabetyp beschreiben und der Funktionskörper muss eine gültige RETURN-Anweisung enthalten.

3) Gespeicherte Prozeduren können nicht-deterministische Funktionen verwenden, aber nicht-deterministische Funktionen können nicht in den Hauptteil einer benutzerdefinierten Funktion eingebaut werden.

4) Eine gespeicherte Prozedur wird im Allgemeinen als unabhängiger Teil ausgeführt (Ausführung durch EXECUTE-Anweisung), während eine Funktion als Teil einer Abfrageanweisung aufgerufen werden kann (SELECT-Aufruf). Da eine Funktion ein Tabellenobjekt zurückgeben kann, kann sie in einer Abfrageanweisung nach dem Schlüsselwort FROM stehen. Gespeicherte Prozeduren sind in SQL-Anweisungen nicht verfügbar, aber Funktionen können verwendet werden.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Implementierung einer SPLIT-ähnlichen String-Splitting-Funktion in MySQL
  • Beispielcode zur Implementierung der String-Split-Funktion im MySQL-Abfragefeld

<<:  Sicherheitskonfigurationsstrategie für CentOS-Server

>>:  Warum TypeScripts Enum problematisch ist

Artikel empfehlen

Eine detaillierte Einführung in den wget-Befehl in Linux

Inhaltsverzeichnis Installieren Sie zuerst wget H...

JS-Implementierung eines Karussellbeispiels

In diesem Artikel wird der spezifische JS-Code zu...

Remotedesktopverbindung zwischen Windows und Linux

Wenn es um eine Remotedesktopverbindung zu Linux ...

Detaillierte Erläuterung der asynchronen Axios-Kommunikation in Vue

1. Zuerst erstellen wir eine JSON-Datei zur inter...

Vollbild-Drag-Upload-Komponente basierend auf Vue3

In diesem Artikel wird hauptsächlich die Vollbild...

Tutorial zur Verwendung des iostat-Befehls unter Linux

Vorwort Es wird gesagt, dass sich die für Betrieb...

MySQL: Datenintegrität

Die Datenintegrität wird in Entitätsintegrität, D...

So verwenden Sie „union all“ in MySQL, um die Union-Sortierung zu erhalten

Manchmal kommt es in einem Projekt aus irreversib...

Detaillierte Schritte zum Erstellen eines Vue-Scaffolding-Projekts

Vue-Gerüst -> vue.cli Erstellen Sie schnell ei...

vue + ts realisiert den Effekt des Ziehens von Elementen mit der Maus

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Schritte zur Installation und Konfiguration von MySQL 5.7

1. MySQL herunterladen 1. Melden Sie sich auf der...