Zufällige Zahlen in MySQL generieren und speichern

Ich hatte heute das Problem, dass ich für ein Demo Projekt tausende Zahlen brauchte um meine Datenbank zu befüllen. Sicherlich kann man das auch mit PHP & Co. machen, aber es geht tatsächlich auch direkt in SQL.

Ich hatte drei Anwendungsfälle:

  1. Ich brauche ganze Zahlen (integer)
  2. Ich brauche Geldbeträge (float)
  3. Ich möchte einen Bereich (min, max) angeben können, um die Demo Daten glaubhafter zu machen.

Der SQL Befehl sieht wie folgt aus:

SELECT FLOOR( RAND() * (maximum - minimum) + minimum) as randomValue;

Mit RAND() kann man eine Zahl zw. 0 und 1 generieren und mit etwas Math-Magic kann man dann auch noch einen Bereich festlegen. Und mittels FLOOR() wird draus eine natürliche Zahl.

Beispiel für eine Zahl zw. 20 und 100:

SELECT FLOOR( RAND() * (100 - 20) + 20) as randomValue;
+-------------+
| randomValue |
+-------------+
| 50          |
+-------------+
1 row in set (0.00 sec)

Beispiel für einen Geldbetrag zwischen 0,50 und 100,00: (wir generieren einen Cent Betrag und rechnen anschließend durch 100)

SELECT FLOOR( RAND() * (10000 - 50) + 50) / 100 as randomValue;
+-------------+
| randomValue |
+-------------+
| 45,65       |
+-------------+
1 row in set (0.00 sec)

Das Speichern ist dann nun ein leichtes. Ich hab so z.B. ein UPDATE durchgeführt, weil die Spalten mit leeren Werten schon existierten:

UPDATE facts
SET value = FLOOR( RAND() * (10000 - 50) + 50)
WHERE id IN (1,2,3,4)

Veröffentlicht von Hans-Helge

Der studierte Informatiker arbeitet als Entwickler und Trainer bei ChurchTools und betreut neben eigenen Projekten einige andere Webseiten u.A. im ehrenamtlichen Bereich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert