Delen via


RAND (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-database in Microsoft Fabric

Geeft een pseudo-willekeurige floatwaarde van 0 tot en 1met , exclusief terug.

Transact-SQL syntaxis-conventies

Syntaxis

RAND ( [ seed ] )

Opmerking

Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.

Arguments

seed

Een geheel getal (tinyint, smallint, of int) die de seedwaarde geeft. Als seed niet wordt gespecificeerd, wijst de SQL Server Database Engine willekeurig een seedwaarde toe. Voor een gespecificeerde seedwaarde is het resultaat dat wordt teruggegeven altijd hetzelfde.

Retourtypen

float

Opmerkingen

Herhaalde aanroepen van RAND() met dezelfde seedwaarde geven dezelfde resultaten.

  • Voor één verbinding, als RAND() wordt aangeroepen met een gespecificeerde seedwaarde, leveren alle volgende aanroepen van RAND() resultaten op gebaseerd op de gezaaide RAND() aanroep. Bijvoorbeeld, de volgende query geeft altijd dezelfde reeks getallen terug.

    SELECT RAND(100),
            RAND(),
            RAND();
    
  • Wanneer je de RAND() functie gebruikt in een UPDATE of query INSERT , krijgen alle getroffen rijen dezelfde waarde.

Voorbeelden

Eén. Maak vier verschillende willekeurige getallen

Het volgende voorbeeld levert vier verschillende willekeurige getallen op die door de RAND() functie worden gegenereerd.

DECLARE @counter AS SMALLINT;

SET @counter = 1;

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

B. Genereer willekeurig 0 of 1

Het volgende voorbeeld gebruikt de ROUND() functie om willekeurig ofwel 0 of 1terug te geven.

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

Opmerking

In dit voorbeeld geeft de FLOOR() functie altijd , 0terwijl de CEILING() functie altijd teruggeeft 1.

C. Genereer willekeurige getallen groter dan 1

Je kunt het bereik van de willekeurige float schalen door de RAND() functie te vermenigvuldigen met een geheel getal. Het volgende voorbeeld geeft een willekeurige float tussen 0 en 10op.

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

SELECT @Constant * RAND() AS RandomNumber;
GO

D. Genereer willekeurige gehele getallen

Je kunt een willekeurige gehele waarde genereren door de RAND() functie te schalen en te combineren met de ROUND(), FLOOR(), of CEILING() functies. Het volgende voorbeeld geeft een willekeurig geheel getal tussen 0 en 10, inclusief.

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. Voeg willekeurige waarden in een tabel in

Het volgende voorbeeld vult een tabelvariabele met willekeurige int-, float- en bitwaarden .

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