Partilhar via


RAND (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do AzureBanco de Dados SQL do Azure Synapse Analyticsno 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 subsequentes RAND() produzem resultados baseados na chamada seeded RAND() . 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 numa UPDATE consulta ou, INSERT todas 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