Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
Azure Synapse Analytics
База данных SQL в Microsoft Fabric
Возвращает псевдослучайное плавающее значение из 0 через 1, эксклюзивно.
Соглашения о синтаксисе Transact-SQL
Синтаксис
RAND ( [ seed ] )
Примечание.
Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
Аргументы
seed
Целочисленное выражение (tinyint, smallint или int), дающее значение семени. Если начальное значение не указано, SQL Server ядро СУБД назначает начальное значение случайным образом. Для указанного начального значения возвращаемый результат всегда будет один и тот же.
Типы возвращаемых данных
float
Замечания
Повторяющиеся вызовы с тем же значением начального RAND() значения возвращают одинаковые результаты.
Для одного подключения, если
RAND()вызывается указанное начальное значение, все последующие вызовыRAND()создают результаты на основе заполненногоRAND()вызова. Например, следующий запрос всегда возвращает ту же последовательность чисел.SELECT RAND(100), RAND(), RAND();При использовании
RAND()функции в объектеUPDATEилиINSERTзапросе все затронутые строки получают одно и то же значение.
Примеры
А. Создайте четыре разных случайных числа
В следующем примере создаются четыре разных случайных числа, созданных функцией RAND() .
DECLARE @counter AS SMALLINT;
SET @counter = 1;
WHILE @counter < 5
BEGIN
SELECT RAND() AS RandomNumber;
SET @counter = @counter + 1;
END
GO
В. Случайным образом сгенерируйте 0 или 1
В следующем примере функция используется ROUND() для случайного возврата либо 0 , либо 1.
SELECT ROUND(RAND(), 0) AS ZeroOrOne;
GO
Примечание.
В этом примере FLOOR() функция всегда возвращает 0, тогда как функция CEILING() всегда возвращает 1.
С. Генерируйте случайные числа больше 1
Вы можете масштабировать диапазон случайного плавающего значения, умножив RAND() функцию на целое значение. Следующий пример возвращает случайное плавающее пространство между 0 и 10.
DECLARE @Constant AS INT;
SET @Constant = 10;
SELECT @Constant * RAND() AS RandomNumber;
GO
D. Генерируйте случайные целые числа
Вы можете сгенерировать случайное целое число, масштабируя RAND() функцию и комбинируя её с ROUND()функциями , FLOOR(), или CEILING() функциями. Следующий пример возвращает случайное целое число между 0 и 10, включительно.
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. Вставьте случайные значения в таблицу
Следующий пример заполняет переменную таблицы случайными значениями int, float и 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