Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL database w usłudze Microsoft Fabric
Zwraca pseudo-losową wartość float od 0 do 1, wyłączną.
Transact-SQL konwencje składni
Składnia
RAND ( [ seed ] )
Uwaga / Notatka
Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.
Arguments
nasienie
Wyrażenie całkowite (tinyint, smallint lub int), które podaje wartość zalążkową. Jeśli seed nie jest określony, silnik bazy danych SQL Server losowo przypisuje wartość seeda. Dla określonej wartości seed wynik jest zawsze taki sam.
Typy zwracane
float
Uwagi
Powtarzalne wywołania z tą RAND() samą wartością seed dają te same wyniki.
Dla jednego połączenia, jeśli
RAND()jest wywołane z określoną wartością zasiedzenia, wszystkie kolejne wywołania dająRAND()wyniki na podstawie zasiedzonegoRAND()wywołania. Na przykład następujące zapytanie zawsze zwraca ten sam ciąg liczb.SELECT RAND(100), RAND(), RAND();Gdy używasz
RAND()funkcji wUPDATEzapytaniu orINSERTwszystkie dotknięte wiersze mają tę samą wartość.
Przykłady
A. Stwórz cztery różne liczby losowe
Poniższy przykład generuje cztery różne liczby losowe generowane przez tę funkcję RAND() .
DECLARE @counter AS SMALLINT;
SET @counter = 1;
WHILE @counter < 5
BEGIN
SELECT RAND() AS RandomNumber;
SET @counter = @counter + 1;
END
GO
B. Losowo generuj 0 lub 1
Poniższy przykład wykorzystuje ROUND() funkcję do losowego zwracania albo , 0 albo 1.
SELECT ROUND(RAND(), 0) AS ZeroOrOne;
GO
Uwaga / Notatka
W tym przykładzie FLOOR() funkcja zawsze zwraca 0, natomiast funkcja CEILING() zawsze zwraca 1.
C. Generuj liczby losowe większe niż 1
Możesz skalować zakres przypadkowego floatu , mnożąc RAND() funkcję wartością całkowitą. Poniższy przykład zwraca losowy float między 0 a .10
DECLARE @Constant AS INT;
SET @Constant = 10;
SELECT @Constant * RAND() AS RandomNumber;
GO
D. Generuj losowe liczby całkowite
Możesz wygenerować losową wartość całkowitą, skalując RAND() funkcję i łącząc ją z , FLOOR(), lub CEILING() funkcjamiROUND(). Poniższy przykład zwraca losową liczbę całkowitą między 0 a 10, włącznie.
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. Wstaw losowe wartości do tabeli
Poniższy przykład wypełnia zmienną tabelową losowymi wartościami int, float i bit .
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