In SQL Server das T-SQL RAND()
Mit der Funktion können Sie eine Zufallszahl generieren. Insbesondere gibt es einen Pseudozufalls-Float-Wert von 0 bis 1 zurück, exklusiv.
Die Funktion akzeptiert ein optionales Argument, das den Startwert bereitstellt. Für jeden gegebenen Seed-Wert sind die Ergebnisse immer gleich.
Syntax
Die Syntax lautet wie folgt:
RAND ( [ seed ] )
Wo Samen ist ein ganzzahliger Ausdruck (tinyint, smallint oder int), der den Startwert angibt. Wenn dieses Argument nicht angegeben wird, weist SQL Server einen Seed nach dem Zufallsprinzip zu.
Beispiel 1 – Keine Argumente
Hier ist ein einfaches Beispiel, um zu demonstrieren, was passiert, wenn wir kein Argument liefern.
SELECT RAND() Result;
Ergebnis:
+--------------------+ | Result | |--------------------| | 0.0354675287734768 | +--------------------+
Das Ergebnis ist keine Konstante – es wird jedes Mal anders sein, wenn Sie es ausführen.
Hier ist ein Beispiel dafür, was passiert, wenn wir mehrere RAND()
ausführen Funktionen zusammen.
SELECT RAND() 'Result 1', RAND() 'Result 2', RAND() 'Result 3';
Ergebnis:
+-------------------+------------------+--------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+------------------+--------------------| | 0.999568268427369 | 0.40098746841349 | 0.0606836711764244 | +-------------------+------------------+--------------------+
Beispiel 2 – Verwenden eines Seed-Werts
Wie bereits erwähnt, können Sie ein Argument übergeben, um den Startwert zu bestimmen. Damit können Sie die Ausgabe der Funktion beeinflussen.
SELECT RAND(8) Result;
Ergebnis:
+-------------------+ | Result | |-------------------| | 0.713722424011731 | +-------------------+
In diesem Fall gibt die Funktion jedes Mal denselben Wert zurück, wenn ein gleicher Argumentwert bereitgestellt wird. Dies wird im folgenden Beispiel demonstriert:
SELECT RAND(8) 'Result 1', RAND(8) 'Result 2', RAND(8) 'Result 3';
Ergebnis:
+-------------------+-------------------+-------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+-------------------+-------------------| | 0.713722424011731 | 0.713722424011731 | 0.713722424011731 | +-------------------+-------------------+-------------------+
Wir haben die Funktion dreimal ausgeführt. Und weil wir jedes Mal denselben Seed verwendet haben, waren die Ergebnisse alle gleich.
Beispiel 3 – Verwendung von RAND() als Teil eines Ausdrucks
Sie können den RAND()
verwenden Funktion als Teil eines Ausdrucks.
SELECT RAND()*10 Result;
Ergebnis:
+------------------+ | Result | |------------------| | 3.32720913214171 | +------------------+
Beispiel 4 – Rundung des Ergebnisses
Wir können den Bruchteil auch entfernen, indem wir die Funktion in eine Funktion wie FLOOR()
verschachteln oder CEILING()
.
SELECT CEILING(RAND()*10) Result;
Ergebnis:
+----------+ | Result | |----------| | 3 | +----------+
Beispiel 5 – Rückgabe einer zufälligen ganzen Zahl zwischen zwei Zahlen
Sie können auch angeben, dass die Zufallszahl zwischen zwei Zahlen liegen muss.
Hier ist ein Beispiel für die Generierung einer Zufallszahl zwischen 5 und 10 (einschließlich).
SELECT FLOOR(RAND()*(10-5+1)+5) Result;
Ergebnis:
+----------+ | Result | |----------| | 9 | +----------+
Lassen Sie uns denselben Code mehrmals ausführen, um die unterschiedlichen Ergebnisse zu sehen.
SELECT FLOOR(RAND()*(10-5+1)+5) 'Result 1', FLOOR(RAND()*(10-5+1)+5) 'Result 2', FLOOR(RAND()*(10-5+1)+5) 'Result 3';
Ergebnis:
+------------+------------+------------+ | Result 1 | Result 2 | Result 3 | |------------+------------+------------| | 10 | 7 | 6 | +------------+------------+------------+