Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Banco de Dados SQL no Microsoft Fabric
Retorna um valor float pseudo-aleatório de 0 através 1de , exclusivo.
Convenções de sintaxe de Transact-SQL
Sintaxe
RAND ( [ seed ] )
Observação
Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.
Argumentos
seed
Uma expressão inteira (tinyint, smallint ou int) que fornece o valor semente. Se seed não estiver especificado, o Mecanismo de Banco de Dados do SQL Server atribuirá um valor de semente aleatório. Para um valor de semente especificado, o resultado retornado é sempre o mesmo.
Tipos de retorno
float
Comentários
Chamadas repetitivas de RAND() com o mesmo valor de semente retornam os mesmos resultados.
Para uma conexão, se
RAND()for chamada com uma valor de semente especificado, todas as chamadas subsequentes deRAND()produzirão resultados com base na chamada deRAND()propagada. Por exemplo, a consulta a seguir sempre retorna a mesma sequência de números.SELECT RAND(100), RAND(), RAND();Quando você usa a função
RAND()em uma consultaUPDATEouINSERT, todas as linhas afetadas obtêm o mesmo valor.
Exemplos
A. Crie quatro números aleatórios diferentes
O exemplo a seguir produz quatro números aleatórios diferentes gerados pela função RAND().
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 a seguir usa a ROUND() função para retornar aleatoriamente ou 10 .
SELECT ROUND(RAND(), 0) AS ZeroOrOne;
GO
Observação
Neste exemplo, a FLOOR() função sempre retorna 0, enquanto a CEILING() função sempre retorna 1.
C. Gerar números aleatórios maiores que 1
Você pode escalar o intervalo do flutuante aleatório multiplicando a RAND() função por um valor inteiro. O exemplo a seguir retorna 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
Você pode gerar um valor inteiro aleatório escalonando a RAND() função e combinando-a com as ROUND()funções, FLOOR(), ou CEILING() . O exemplo a seguir retorna 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. Insira valores aleatórios em uma tabela
O exemplo a seguir 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