Freigeben über


RAND (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-Datenbank in Microsoft Fabric

Gibt einen pseudo-zufälligen Gleitwert von 0 durch 1, exklusiv.

Transact-SQL-Syntaxkonventionen

Syntax

RAND ( [ seed ] )

Hinweis

Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Argumente

seed

Ein ganzzahliger Ausdruck (tinyint, smallint oder int), der den Startwert angibt. Wenn seed nicht angegeben ist, weist SQL Server-Datenbank-Engine einen zufälligen Ausgangswert zu. Für einen bestimmten Ausgangswert ist das zurückgegebene Ergebnis immer gleich.

Rückgabetypen

float

Hinweise

Bei wiederholten Aufrufen von RAND() mit demselben Ausgangswert werden dieselben Ergebnisse zurückgegeben.

  • Wenn für eine bestimmte Verbindung RAND() mit einem angegebenen Ausgangswert aufgerufen wird, führen alle nachfolgenden Aufrufe von RAND() zu Ergebnissen, die auf dem RAND()-Ausgangsaufruf basieren. Durch die folgende Abfrage wird z. B. immer dieselbe Nummernreihenfolge zurückgegeben.

    SELECT RAND(100),
            RAND(),
            RAND();
    
  • Wenn Sie die RAND()-Funktion in einer UPDATE- oder INSERT-Abfrage verwenden, erhalten alle betroffenen Zeilen denselben Wert.

Beispiele

A. Erstelle vier verschiedene Zufallszahlen

Das folgende Beispiel führt zu vier Zufallszahlen, die von der RAND()-Funktion generiert werden.

DECLARE @counter AS SMALLINT;

SET @counter = 1;

WHILE @counter < 5
    BEGIN
        SELECT RAND() AS RandomNumber;
        SET @counter = @counter + 1;
    END
GO

B. Generiere zufällig 0 oder 1

Das folgende Beispiel verwendet die ROUND() Funktion, um entweder oder 01zufällig zurückzugeben.

SELECT ROUND(RAND(), 0) AS ZeroOrOne;
GO

Hinweis

In diesem Beispiel gibt die FLOOR() Funktion immer , 0während die CEILING() Funktion immer zurückgibt 1.

C. Generiere Zufallszahlen größer als 1

Man kann den Bereich des Zufallsfloats skalieren, indem man die RAND() Funktion mit einem ganzzahligen Wert multipliziert. Das folgende Beispiel liefert einen zufälligen Float zwischen 0 und 10.

DECLARE @Constant AS INT;
SET @Constant = 10;

SELECT @Constant * RAND() AS RandomNumber;
GO

D. Erzeugen Sie zufällige ganze Zahlen

Man kann einen zufälligen ganzzahligen Wert erzeugen, indem man die RAND() Funktion skaliert und mit den ROUND(), FLOOR(), oder CEILING() Funktionen kombiniert. Das folgende Beispiel liefert eine zufällige ganze Zahl zwischen 0 und 10einschließlich zurück.

DECLARE @Constant AS INT;
SET @Constant = 10;

SELECT ROUND(@Constant * RAND(), 0) AS FirstRandomInteger,
       FLOOR(@Constant * RAND()) AS SecondRandomInteger,
       CEILING(@Constant * RAND()) AS ThirdRandomInteger;
GO

E. Fügen Sie Zufallswerte in eine Tabelle ein

Das folgende Beispiel füllt eine Tabellenvariable mit zufälligen int-, Float- und Bitwerten.

DECLARE @RandomTable TABLE (
    RandomIntegers INT,
    RandomFloats FLOAT,
    RandomBits BIT);

DECLARE @RowCount AS INT;
DECLARE @Counter AS INT;

SET @RowCount = 10;
SET @Counter = 1;

WHILE @Counter <= @RowCount
    BEGIN
        INSERT INTO @RandomTable
        VALUES (ROUND(10 * RAND(), 0), RAND(), CAST (ROUND(RAND(), 0) AS BIT));
        SET @Counter = @Counter + 1;
    END

SELECT *
FROM @RandomTable;
GO