Im vorherigen Artikel wurde erläutert, wie man in Oracle Zufallszahlen, Zeichenfolgen, Daten, Bestätigungscodes und UUIDs generiert. Heute werden wir weiter darüber sprechen, wie man in MySQL verschiedene Zufallsdaten generiert.
Zufallszahlen generierenGenerieren Sie eine Zufallszahl zwischen 0 und 1Mit der RAND-Funktion in MySQL kann eine Zufallszahl größer oder gleich 0 und kleiner als 1 generiert werden. Zum Beispiel: SELECT rand(); rand() | ------------------| 0,7245639057127423| SELECT rand(); rand() | ----------------------------------| 0,01697599982561171| Die Funktion gibt einen Double-Wert mit 16 Dezimalstellen zurück; jeder Aufruf gibt andere Daten zurück. Wenn Sie bestimmte Szenarien reproduzieren möchten, müssen Sie sicherstellen, dass Sie bei jedem Ausführen dieselben Zufallszahlen generieren. In diesem Fall können Sie der RAND-Funktion einen Eingabeparameter übergeben, um einen Zufallszahlen-Startwert festzulegen. Zum Beispiel: SELECT rand(1); rand(1) | ----------------------------------| 0,40540353712197724| SELECT rand(1); rand(1) | ----------------------------------| 0,40540353712197724| Aus den Ergebnissen können wir ersehen, dass derselbe Seed dieselbe Zufallszahl zurückgibt. Erzeugt eine Zufallszahl im angegebenen BereichBasierend auf der RAND-Funktion und mathematischen Operationen können Sie eine Zufallszahl zwischen zwei beliebigen Zahlen zurückgeben: niedrig + RAND() * (hoch − niedrig) Der obige Ausdruck gibt eine Zufallszahl zurück, die größer oder gleich „low“ und kleiner als „high“ ist. Zum Beispiel: SELECT 10 + rand(1) * 10; 10 + rand(1) * 10 | ------------------| 14.054035371219772| Das obige Beispiel gibt eine Zufallszahl zurück, die größer oder gleich 10 und kleiner als 20 ist. Wenn Sie zufällige Ganzzahlen innerhalb eines bestimmten Bereichs generieren möchten, können Sie die Funktion FLOOR hinzufügen. Zum Beispiel: Wählen Sie floor(10 + rand(1) * (10)) AS rd; rd | ----| 14,0| Diese Anweisung gibt eine zufällige Ganzzahl größer oder gleich 10 und kleiner oder gleich 19 (nicht 20) zurück. Generieren Sie einen 6-stelligen mobilen BestätigungscodeWir haben eine zufällige Ganzzahl innerhalb des angegebenen Bereichs erhalten und können zusammen mit der LPAD-Funktion einen 6-stelligen Mobiltelefon-Verifizierungscode generieren. Zum Beispiel: Wählen Sie lpad (Floor (Rand (999) * 1000000), 6, '0') als Captcha; Captcha| -------| 088146 | Die Funktion lpad kann sicherstellen, dass 0 vorne hinzugefügt wird, wenn die Daten weniger als 6 Bit umfassen. Generiert Zufallszahlen, die einer Normalverteilung folgenDie Funktion RAND generiert eine Zufallszahl, die einer gleichmäßigen Verteilung folgt. MySQL bietet keine Funktion zum Generieren von Zufallszahlen, die einer Normalverteilung folgen. Wir können eine gespeicherte Funktion erstellen, um normalverteilte Zufallszahlen zu simulieren: Trennzeichen // Funktion „normal_distrib“ erstellen (Mittelwert „double“, Standardabweichung „double“) gibt doppeltes kein SQL zurück beginnen setze @x = rand(), @y = rand(); setze @nd = (sqrt(-2 * log(@x)) * cos(2 * pi() * @y)) * stdev + Mittelwert; Rückgabe @nd; Ende // Trennzeichen ; Die obige Funktion generiert normalverteilte Zufallszahlen aus zwei gleichmäßig verteilten Zufallszahlen unter Verwendung des Box-Muller-Transformationsalgorithmus. Die folgende Anweisung generiert mithilfe der Funktion normal_distrib eine normalverteilte Zufallszahl mit einem Erwartungswert von 0 und einer Standardabweichung von 1: SELECT normal_distrib(0,1); Normalverteilung(0,1)| ----------------------------------| 1.4930564399841173| Mit der folgenden Anweisung kann überprüft werden, ob die Funktion normal_distrib einer Normalverteilung folgt: mit rekursivem temp(val) als ( wähle normal_distrib(0,1) Vereinigung alle wähle normal_distrib(0,1) von temp Grenze 1000000 ) wähle /*+ set_var(cte_max_recursion_depth = 1m) */avg(val),std(val) von Temperatur; Durchschnitt(Wert) |Standard(Wert) | ---------------------|------------------| -0,002340136192616743|0,9994844557755181| Wenn man diese Daten 1.000.000 Mal ausführt und den Mittelwert und die Standardabweichung berechnet, liegen die zurückgegebenen Ergebnisse sehr nahe bei 0 und 1. Generieren Sie eine zufällige ZeichenfolgeGenerieren Sie eine zufällige Zeichenfolge mit fester LängeZusätzlich zu Zufallszahlen müssen wir manchmal auch zufällige Zeichenfolgen generieren. MySQL bietet keine spezielle Funktion zum Generieren von Zufallszeichenfolgen, diese kann jedoch durch andere Funktionen simuliert werden. Zum Beispiel: Wählen Sie char(floor(rand() * 26)+65) als rand_char; rand_char| ---------| T | Die obige Abfrage gibt einen zufälligen Großbuchstaben zurück. Die Funktion char wird verwendet, um den ASCII-Code in das entsprechende Zeichen umzuwandeln. Basierend auf dieser Abfrage können wir außerdem eine gespeicherte Funktion erstellen: Trennzeichen // Funktion „rand_string (Länge Ganzzahl)“ erstellen gibt Text zurück, kein SQL beginnen Deklarieren Sie den Zähler int als Standardwert 1. deklariere str-Text als Standard ''; wenn len < 1 dann gibt null zurück; Ende wenn; while Zähler <= Länge do setze str = concat(str, char(floor(rand() * 94) + 33)); setze Zähler = Zähler + 1; Ende während; gibt str zurück; Ende // Trennzeichen ; Die Funktion rand_string gibt eine zufällige Zeichenfolge zurück, die aus beliebigen druckbaren Zeichen besteht (ASCII-Codes von 33 bis 126). Zum Beispiel: rand_string(8)| --------------| 7j5dz[58 | Das obige Beispiel gibt eine zufällige Zeichenfolge der Länge 8 zurück, die aus druckbaren Zeichen besteht. Darüber hinaus kann die elt-Funktion in MySQL auch verwendet werden, um das Element an der angegebenen Position zurückzugeben. Zum Beispiel: Wählen Sie elt(1 + floor(rand() * 36), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A','B','C','D','E','F','G', 'H','I','J','K','L','M','N', 'O','P','Q','R','S','T', 'U', 'V', 'W', 'X', 'Y', 'Z') als Wert; Wert| ---| B | Die obige Anweisung gibt eine Zufallszahl oder einen Großbuchstaben zurück. Wenn Sie diese Anweisung in die Funktion rand_string einsetzen, können Sie eine zufällige Zeichenfolge aus Zahlen und Großbuchstaben zurückgeben. Erzeugt eine zufällige Zeichenfolge variabler LängeWie geben Sie also eine zufällige Zeichenfolge mit variabler Länge zurück? Es ist ganz einfach: Geben Sie einfach einen Parameter mit zufälliger Länge für die Funktion rand_string an. Zum Beispiel: Wählen Sie Rand_Zeichenfolge (Boden (10 + Rand () * 11)); Rand_Zeichenfolge(Boden(10 + Rand() * 11))| ------------------------------------| 4U13MjO+($}k"cO@5%[ | Das obige Beispiel gibt eine zufällige Zeichenfolge druckbarer Zeichen mit einer Länge größer oder gleich 10 und kleiner oder gleich 20 zurück. Generieren Sie ein zufälliges Datum und eine zufällige UhrzeitDurch das Hinzufügen einer Zufallszahl zum angegebenen Datum können Sie ein zufälliges Datum erhalten. Zum Beispiel: SELECT date_add('2020-01-01', Intervall rand() * 31 Tage) rand_date; Randdatum | ----------| 19.01.2020| Das obige Beispiel gibt ein zufälliges Datum im Januar 2020 zurück. Die folgende Anweisung gibt eine zufällige Tageszeit zurück: SELECT Sek. bis Zeit(rand() * 3600) Randzeit; Randzeit | ------------------| 00:05:29.546878000| Unter ihnen wird die Funktion sec_to_time verwendet, um Sekunden in Zeitdaten umzuwandeln. Einen zufälligen Datensatz aus einer Tabelle abrufenBei einer Abfrageanweisung, die mehrere Datenzeilen zurückgibt, gibt die RAND-Funktion jedes Mal andere Zufallsdaten zurück. Zum Beispiel: Wählen Sie Rand (1) aus Mitarbeiter; rand(1) | --------------------| 0,40540353712197724| 0,8716141803857071| 0,1418603212962489| ... Mit dieser Funktion können wir zufällige Datenzeilen aus einer Tabelle zurückgeben. Zum Beispiel: Wählen Sie Mitarbeiter-ID, Mitarbeitername aus. VON Mitarbeiter ORDER BY rand(1) GRENZE 5; Mitarbeiter-ID|Mitarbeitername | ------|----------| 6|Wei Yan| 14|Zhang Bao| 16|Zhou Cang| 15|Zhao Tong| 1|Liu Bei| Das obige Beispiel gibt 5 zufällige Zeilen aus der Mitarbeitertabelle zurück. Diese Methode muss für jede Datenzeile in der Tabelle eine Zufallszahl generieren und diese dann sortieren. Daher wird sie mit zunehmender Datenmenge in der Tabelle allmählich langsamer. Wenn in der Tabelle ein automatisch inkrementierter Primärschlüssel vorhanden ist, können Sie auch zufällige Daten basierend auf dem Primärschlüssel generieren. Zum Beispiel: Wählen Sie Runde (rand() * (wählen Sie max (emp_id) aus Mitarbeiter)) als ID; Ich würde | ----| 10,0| Geben Sie dann einen zufälligen Datensatz basierend auf dieser Zufallszahl zurück: Wählen Sie e.emp_id, e.emp_name VON Mitarbeiter INNER JOIN (SELECT Runde (rand() * (SELECT max (emp_id) FROM Mitarbeiter)) AS ID ) AS t WO e.emp_id >= t.id GRENZE 1; Mitarbeiter-ID|Mitarbeitername| ------|--------| 9|Zhao Yun| Diese Methode kann jeweils nur einen zufälligen Datensatz zurückgeben und gibt nur dann gleichmäßig verteilte zufällige Datensätze zurück, wenn in den Werten des Auto-Increment-Felds keine Lücken vorhanden sind. UUID generierenUUID (Universal Unique Identifier) bzw. GUID (Globally Unique Identifier) ist eine 128-Bit-Nummer, mit der jedes Netzwerkobjekt oder jede Netzwerkressource eindeutig identifiziert werden kann. Aufgrund ihres Generierungsmechanismus ist garantiert, dass eine UUID fast nie mit anderen UUIDs wiederholt wird, weshalb sie häufig zum Generieren von Primärschlüsselwerten in Datenbanken verwendet wird. MySQL bietet eine Systemfunktion UUID, die zum Generieren von UUIDs verwendet werden kann. Zum Beispiel: Wählen Sie uuid(); uuid() | ------------------------------------| 35f67fde-e0e9-11ea-9d25-0800272142b1| Wenn Sie eine UUID ohne Bindestriche (-) generieren möchten, können Sie die Funktion REPLACE verwenden: Wählen Sie Ersetzen(uuid(),'-',''); ersetzen(uuid(),'-','') | --------------------------------| 8505290be0ea11ea9d250800272142b1| Darüber hinaus bietet MySQL auch eine UUID_SHORT-Funktion, die eine vorzeichenlose 64-Bit-Ganzzahl zurückgeben kann. Zum Beispiel: Wählen Sie uuid_short(); uuid_short() | -----------------| 98862025337208832| Diese Funktion gibt eine „kurze“ eindeutige Kennung zurück, die nur dann eindeutig ist, wenn die folgenden Bedingungen erfüllt sind:
ZusammenfassenIn diesem Artikel wird erläutert, wie Sie in einer MySQL-Datenbank zufällige Daten generieren, darunter Zufallszahlen, Prüfcodes, Zufallszeichenfolgen sowie zufällige Daten und Uhrzeiten. Außerdem wird erläutert, wie Sie zufällige Datensätze aus einer Tabelle zurückgeben und UUIDs generieren. Dies ist das Ende dieses Artikels zum Generieren von Zufallszahlen, Zeichenfolgen, Daten, Bestätigungscodes und UUIDs in MySQL. Weitere Informationen zum Generieren von Zufallszahlen und UUIDs in 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! Das könnte Sie auch interessieren:
|
<<: CSS zum Erzielen eines Beispielcodes für eine Bildlaufleiste
>>: Docker erstellt Schritte zur Implementierung von Kubectl-Images
In diesem Artikel wird der spezifische Code von j...
1. Erste Schritte mit setUp Stellen Sie kurz die ...
Inhaltsverzeichnis Gleichzeitige Szenarien Schrei...
Zunächst können Sie den Unterschied zwischen den ...
Lassen Sie mich mit einer Frage beginnen: Wenn Si...
von Nehmen wir als Beispiel den im Bild gezeigten...
1. Installieren Sie das integrierte Linux-Subsyst...
Komponente zur Leistungsoptimierung für den erste...
I. Einleitung 1: SSL-Zertifikat Mein Domänenname ...
Dieser Artikel beschreibt, wie mehrere Instanzen ...
In diesem Artikel wird die Installations- und Kon...
...Es ist so, heute wollte ich ein Popup-Fenster m...
1. Download-Adresse: mysql-8.0.17-winx64 Herunter...
Icon-Icon-Verarbeitungslösung Das Ziel dieses Dat...
Webformulare sind der primäre Kommunikationskanal...