RAND (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-databas i Microsoft Fabric

Returnerar ett pseudo-slumpmässigt flyttalvärde från 0 genom 1, exklusivt.

Transact-SQL syntaxkonventioner

Syntax

RAND ( [ seed ] )

Anmärkning

Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.

Arguments

frö

Ett heltalsuttryck (tinyint, smallint eller int) som ger frövärdet. Om frö inte specificeras, tilldelar SQL Server Database Engine ett frövärde slumpmässigt. För ett specificerat frövärde är resultatet som returneras alltid detsamma.

Returtyper

float

Anmärkningar

Upprepade anrop med RAND() samma seed-värde ger samma resultat.

  • För en anslutning, om RAND() anropas med ett specificerat seedvärde, ger alla efterföljande anrop resultat RAND() baserat på det seedade RAND() anropet. Till exempel returnerar följande fråga alltid samma talsekvens.

    SELECT RAND(100),
            RAND(),
            RAND();
    
  • När du använder RAND() funktionen i en UPDATE eller eller INSERT får alla berörda rader samma värde.

Examples

A. Skapa fyra olika slumpmässiga nummer

Följande exempel ger fyra olika slumptal genererade av RAND() funktionen.

DECLARE @counter AS SMALLINT;

SET @counter = 1;

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

B. Generera slumpmässigt 0 eller 1

Följande exempel använder ROUND() funktionen för att slumpmässigt returnera antingen 0 eller 1.

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

Anmärkning

I detta exempel returnerar FLOOR()0funktionen alltid , medan funktionen alltid returnerar 1CEILING() .

C. Generera slumpmässiga tal större än 1

Du kan skala intervallet för den slumpmässiga flyttalen genom att multiplicera RAND() funktionen med ett heltalsvärde. Följande exempel returnerar en slumpmässig flytt mellan 0 och 10.

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

SELECT @Constant * RAND() AS RandomNumber;
GO

D. Generera slumpmässiga heltal

Du kan generera ett slumpmässigt heltalsvärde genom att skala RAND() funktionen och kombinera den med ROUND(), FLOOR(), eller CEILING() funktionerna. Följande exempel returnerar ett slumpmässigt heltal mellan 0 och 10, inklusive.

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. Infoga slumpmässiga värden i en tabell

Följande exempel fyller en tabellvariabel med slumpmässiga int-, flyttal- och bitvärden .

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