Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Banco de Dados SQL do Azure Synapse Analytics
no Microsoft Fabric
Devolve um valor flutuante pseudo-aleatório de 0 através 1de , exclusivo.
Transact-SQL convenções de sintaxe
Sintaxe
RAND ( [ seed ] )
Observação
Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.
Arguments
sementes
Uma expressão inteira (tinyint, smallint ou int) que dá o valor semente. Se a seed não for especificada, o SQL Server Database Engine atribui um valor seed aleatoriamente. Para um valor seed especificado, o resultado devolvido é sempre o mesmo.
Tipos de devolução
float
Observações
Chamadas repetitivas de RAND() com o mesmo valor seed devolvem os mesmos resultados.
Para uma ligação, se
RAND()for chamada com um valor seed especificado, todas as chamadas subsequentesRAND()produzem resultados baseados na chamada seededRAND(). Por exemplo, a consulta seguinte devolve sempre a mesma sequência de números.SELECT RAND(100), RAND(), RAND();Quando usas a
RAND()função numaUPDATEconsulta ou,INSERTtodas as linhas afetadas recebem o mesmo valor.
Examples
A. Crie quatro números aleatórios diferentes
O exemplo seguinte produz quatro números aleatórios diferentes gerados pela RAND() função.
DECLARE @counter AS SMALLINT;
SET @counter = 1;
WHILE @counter < 5
BEGIN
SELECT RAND() AS RandomNumber;
SET @counter = @counter + 1;
END
GO
B. Gerar aleatoriamente 0 ou 1
O exemplo seguinte usa a ROUND() função para devolver aleatoriamente ou 0 ou 1.
SELECT ROUND(RAND(), 0) AS ZeroOrOne;
GO
Observação
Neste exemplo, a FLOOR() função devolve 0sempre , enquanto a CEILING() função retorna 1sempre .
C. Gerar números aleatórios maiores que 1
Pode escalar o intervalo do flutuante aleatório multiplicando a RAND() função por um valor inteiro. O exemplo seguinte devolve um flutuante aleatório entre 0 e 10.
DECLARE @Constant AS INT;
SET @Constant = 10;
SELECT @Constant * RAND() AS RandomNumber;
GO
D. Gerar inteiros aleatórios
Pode gerar um valor inteiro aleatório escalando a RAND() função e combinando-a com as ROUND()funções, FLOOR(), ou CEILING() . O exemplo seguinte devolve um inteiro aleatório entre 0 e 10, inclusive.
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. Inserir valores aleatórios numa tabela
O exemplo seguinte preenche uma variável de tabela com valores aleatórios int, float e 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