Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

RAND()-Beispiele in SQL Server

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          |
+------------+------------+------------+