Megosztás a következőn keresztül:


RAND (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-adatbázis a Microsoft Fabricben

Egy pszeudo-véletlenszerű lebegő értéket ad vissza , 0 exkluzív értéken keresztül 1.

Transact-SQL szintaxis konvenciók

Szemantika

RAND ( [ seed ] )

Megjegyzés:

Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.

Arguments

seed

Egy egész szám kifejezés (tinyint, smallint vagy int), amely megadja a magértéket. Ha a mag nincs megadva, az SQL Server Database Engine véletlenszerűen rendel egy seed értéket. Egy meghatározott magérték esetén a visszaadott eredmény mindig ugyanaz.

Visszatérési típusok

float

Megjegyzések

Ugyanazzal a magértékkel ismétlődő hívások RAND() ugyanazt az eredményt adják.

  • Egy kapcsolat esetén, ha RAND() meghatározott magértékkel hívják, az összes további hívás RAND() a seeded RAND() call alapján eredményt hoz. Például a következő lekérdezés mindig ugyanazt a számsorozatot adja vissza.

    SELECT RAND(100),
            RAND(),
            RAND();
    
  • Ha a RAND() függvényt UPDATE az or INSERT lekérdezésben használod, az összes érintett sor ugyanazt az értéket kapja.

Példák

A. Négy különböző véletlenszámot hozz létre

A következő példa négy különböző véletlenszámot eredményez, amelyeket a RAND() függvény generál.

DECLARE @counter AS SMALLINT;

SET @counter = 1;

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

B. Generálj véletlenszerűen 0 vagy 1

A következő példa a ROUND() függvényt véletlenszerűen visszaadja vagy vagy 10 .

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

Megjegyzés:

Ebben a példában a FLOOR() függvény mindig visszaadja 0, míg a CEILING() függvény mindig 1.

C. Generálj véletlenszámokat, amelyek nagyobbak mint 1

A véletlenszerű lebegő tartományát úgy lehet skálázni, hogy a RAND() függvényt egész értékkel szorozzuk. A következő példa véletlenszerű lebegést ad vissza és 10között0.

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

SELECT @Constant * RAND() AS RandomNumber;
GO

D. Véletlenszerű egész számok generálása

Véletlenszerű egész értéket generálhatsz úgy, hogy skálázod a RAND() függvényt, és kombinálod az ROUND(), FLOOR(), vagy CEILING() függvényekkel. A következő példa egy véletlenszerű egész számot ad és 010között, beleértve , beleértve .

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. Véletlenszerű értékek bekerülése egy táblázatba

A következő példa egy táblázatváltozót véletlenszerű int, lebegő és bit értékekkel tölt fel.

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