Einfache Anwendungsbeispiele für benutzerdefinierte MySQL-Funktionen

Einfache Anwendungsbeispiele für benutzerdefinierte MySQL-Funktionen

Dieser Artikel veranschaulicht anhand von Beispielen die Verwendung benutzerdefinierter MySQL-Funktionen. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Beginnen wir mit einem einfachen Beispiel. Erstellen Sie eine Funktion, um ein Datum im Format „2009-06-23 00:00:00“ in ein Datum im Format „2009 23. Juni 00:00“ umzuwandeln:

TRENNUNGSZEICHEN $$
Funktion löschen, wenn `sp_test`.`getdate`$$ vorhanden ist
ERSTELLEN SIE DIE FUNKTION `sp_test`.`getdate`(gdate datetime) GIBT varchar(255) ZURÜCK
BEGINNEN
DECLARE x VARCHAR(255) DEFAULT '';
SET x = date_format(gdate,'%Y Jahr %m Monat %d Tag %h Stunde %i Minute %s Sekunde');
RETURN x;
ENDE $$
TRENNUNGSZEICHEN ;

Analyse:

Der erste Satz definiert einen Endbezeichner. Da MySQL standardmäßig ein Semikolon als Endbezeichner von SQL-Anweisungen verwendet und ein Semikolon innerhalb des Funktionskörpers verwendet wird, steht es im Konflikt mit dem standardmäßigen SQL-Endbezeichner. Daher müssen Sie zuerst ein anderes Symbol als SQL-Endbezeichner definieren.

Der zweite Satz lautet: Wenn die Funktion bereits existiert, löschen Sie sie. Sp_test ist der Name der Datenbank, die Funktion ist mit der Datenbank verknüpft und getdate ist der Name der Funktion.

Der dritte Satz erstellt eine Funktion. Die Klammern enthalten den Namen und den Typ des Parameters. RETURNS definiert den Typ des Rückgabewerts der Funktion.

Der Funktionskörper muss zwischen BEGIN END platziert werden;

Mit DECLARE werden Variablen im Funktionskörper definiert. Hier wird eine Variable x definiert, die standardmäßig leer ist. Anschließend wird mit SET der Variable x ein Wert zugewiesen.

RETURN ist der Rückgabewert. Hier wird die Variable x zurückgegeben. Der Typ von x muss mit dem im dritten Satz definierten Rückgabetyp übereinstimmen.

Anruf:

Wählen Sie getdate('2009-06-23 00:00:00');

Gibt „2009-06-23 00:00:00“ zurück.

Branchenstruktur

TRENNUNGSZEICHEN $$
DROP-FUNKTION, WENN `sp_test`.`cutString` EXISTIERT $$
ERSTELLEN SIE DIE FUNKTION `sp_test`.`cutString`(s VARCHAR(255),n INT) GIBT varchar(255) ZURÜCK
BEGINNEN
WENN(ISNULL(s)) DANN ZURÜCKGEBEN '';
SONST WENN CHAR_LENGTH(s)<n, DANN RETURN s;
SONST WENN CHAR_LENGTH(S)=n, DANN RETURN „gleich“;
SONST RETURN CONCAT(LINKS(s,n),'...');
ENDE, WENN;
ENDE $$
TRENNUNGSZEICHEN ;

Analyse:

Dies ist eine Funktion zum Extrahieren einer Zeichenfolge. Sie hat zwei Parameter, einer ist eine Zeichenfolge s und der andere ist eine Zahl n. Sie behält die ersten n Bits der Zeichenfolge s. Wenn die Anzahl der Bits in der Zeichenfolge kleiner als n ist, gibt sie die Zeichenfolge s zurück. Wenn sie größer als n ist, gibt sie die ersten n Bits zurück, gefolgt von ...

Anruf:

Wählen Sie cutString('abcdefghijklmnopqrstuvwxyz',5);

Gibt „abced...“ zurück.

Schleifenstruktur

TRENNUNGSZEICHEN $$
Funktion löschen, wenn `sp_test`.`morestar` vorhanden ist$$
ERSTELLEN SIE DIE FUNKTION `sp_test`.`morestar`(n INT) GIBT TEXT ZURÜCK
BEGINNEN
DECLARE i INT DEFAULT 0;
DECLARE s TEXT DEFAULT '';
meineSchleife:LOOP
Setze i = i + 1;
SETZEN Sie s = CONCAT(s,'*');
WENN i > n, DANN VERLASSE myloop;
ENDE, WENN;
ENDE DER SCHLEIFE myloop;
RETURN s;
ENDE $$
TRENNUNGSZEICHEN ;

Analyse: Generieren Sie n *.

Anruf:

Wählen Sie mehr Stern (5);

zurückkehren '*****'

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen ansehen: „Zusammenfassung der allgemeinen MySQL-Funktionen“, „Zusammenfassung der Kenntnisse zu MySQL-Protokollvorgängen“, „Zusammenfassung der Kenntnisse zu MySQL-Transaktionsvorgängen“, „Zusammenfassung der Kenntnisse zu gespeicherten MySQL-Prozeduren“ und „Zusammenfassung der Kenntnisse zu MySQL-Datenbanksperren“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Beispiel für die benutzerdefinierte MySQL-Funktion CREATE FUNCTION
  • Ausführliche Erläuterung zum Erstellen benutzerdefinierter Funktionen und gespeicherter Prozeduren in MySQL
  • MySQL-Konvertierung chinesischer Zeichen in Pinyin, benutzerdefinierte Funktion und Anwendungsbeispiele (erster Buchstabe des ersten Wortes)
  • Eine kurze Diskussion über benutzerdefinierte MySQL-Funktionen
  • So verwenden Sie benutzerdefinierte Funktionen zum Extrahieren von Zahlen aus Zeichenfolgen in MySQL
  • Probleme beim Erstellen benutzerdefinierter Funktionen in MySQL
  • Detaillierte Erläuterung der Definition und Verwendung von in MySQL gespeicherten Funktionen (benutzerdefinierten Funktionen)
  • MySQL-Benutzerdefinierte Funktion zum Bestimmen, ob es sich um einen positiven Ganzzahl-Beispielcode handelt
  • Detaillierte Erläuterung der benutzerdefinierten MySQL-Funktionen und gespeicherten Prozeduren
  • MySQL verwendet benutzerdefinierte Funktionen, um die übergeordnete ID oder untergeordnete ID rekursiv abzufragen
  • Analyse des Prinzips und der Verwendung von MySQL-Benutzerdefinierten Funktionen

<<:  Diagramm des Hyperledger Fabric 1.4-Umgebungskonstruktionsprozesses unter Windows 10

>>:  Detaillierte Erklärung des strikten Modus in JavaScript

Artikel empfehlen

Installieren Sie Apache2.4+PHP7.0+MySQL5.7.16 auf macOS Sierra

Obwohl Mac-Systeme mit PHP und Apache ausgeliefer...

Vue erzielt einen nahtlosen Karusselleffekt

In diesem Artikel wird der spezifische Code von V...

JavaScript-Canvas zum Laden von Bildern

In diesem Artikel wird der spezifische Code von J...

Detailliertes Tutorial zur Installation von mysql8.0 mit dem Linux-Befehl yum

1. Reinigen Sie vor der Installation gründlich rp...

Konfigurationsmethode für die VMware Kali-Umgebung virtueller Maschinen

1|0 Kompilieren Sie den Kernel (1) Führen Sie den...

Probleme und Lösungen bei der Installation von Mininet auf Ubuntu 16.04.4LTS

Mininet Mininet ist eine leichtgewichtige, softwa...

So verwenden Sie die Shell, um Batchvorgänge auf mehreren Servern auszuführen

Inhaltsverzeichnis SSH-Protokoll SSH Verbindungsp...

Einige „Fallstricke“ beim Upgrade der MySQL-Datenbank

Bei kommerziellen Datenbanken hat die Datenbankak...