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

Beispiele für korrekte Beurteilungsmethoden für Datentypen in JS

Inhaltsverzeichnis Vorwort Kann typeof den Typ ko...

jQuery implementiert verschachtelte Tab-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

Semantische Webseiten XHTML semantische Auszeichnung

Ein weiterer wichtiger Aspekt bei der Trennung vo...

Nginx-Zugriffssteuerungs- und Parameteroptimierungsmethoden

Globale Nginx-Variablen Es gibt viele globale Var...

Der Unterschied zwischen this.$router und this.$route in Vue und der push()-Methode

Im offiziellen Dokument heißt es: Durch Einfügen ...

XHTML-Einführungstutorial: Textformatierung und Sonderzeichen

<br />Dieser Abschnitt stellt die Implementi...

9 praktische Tipps zum Erstellen von Webinhaltsseiten

Inhalt 1. Geben Sie den Lesern einen Grund zu blei...

So fragen Sie schnell 10 Millionen Datensätze in MySQL ab

Inhaltsverzeichnis Normale Paging-Abfrage So opti...

UTF-8- und GB2312-Webkodierung

In letzter Zeit haben mich viele Studenten zur Ko...

Detaillierte Erklärung des dynamischen Weihnachtsbaums durch JavaScript

Inhaltsverzeichnis 1. Animierter Weihnachtsbaum, ...

Detaillierte Erklärung wichtiger Kaskadierungskonzepte in CSS

Kürzlich stieß ich im Verlauf des Projekts auf ei...