Obtendo valor aleatório no banco de dados MS-SQL Server – RAND()
Neste post, veremos como obter um valor aleatório no SQL Server utilizando a função RAND() do Transact-SQL.
Primeiramente, vamos conhecer a sintaxe desta função.
RAND : Sintaxe
RAND ( [ seed ] )
Argumentos
seed
É um número inteiro expressão (tinyint, smallint ou int) que fornece o valor de semente.
Porém se seed não estiver especificado, o Mecanismo de Banco de Dados do SQL Server atribuirá um valor de semente aleatório.
Por outro lado, para um valor de seed (semente) especificado, o resultado retornado é sempre o mesmo.
Retorno da Função RAND()
A função RAND retorna um valor float e outra característica é que ela só retorna números entre 0 e 1
SELECT RAND()
(Exemplo resultado.: 0.494443).
Por outro lado, uma observação importante sobre esta função é que chamadas repetitivas de RAND() com o mesmo valor de seed, retornam os mesmos resultados.
Por exemplo, a consulta a seguir sempre retornará a mesma sequência de números.
SELECT RAND(100), RAND(), RAND()
Como fazemos para que a função RAND() retorne valor inteiro ?
Porém, para fazer a função RAND do SQL server retornar um número inteiro, basta utilizarmos um pouco de matemática e converte-la em um inteiro através da função CAST()
Número aleatório SQL Server entre 0 e 9 com RAND()
Assim, para fazermos com que o SQL Server retorne um valor inteiro entre 0 a 9, basta multiplicarmos o valor obtido com rand por 10, utilizando o seguinte script T-SQL:
SELECT CAST(RAND() * 10 AS INTEGER)
Número inteiro aleatório SQL Server entre 0 e 19 : Função RAND()
Então, se você necessita de um número inteiro entre 0 a 19, utilize o script Transact-SQL
SELECT CAST(RAND() * 20 AS INTEGER)
Portanto, para obter outras faixas basta alterar o múltiplo na expressão do script TSQL.
Obtendo quatro números aleatórios diferentes que são gerados pela função RAND.
Por fim, podemos obter 4 números diferentes, usando o script T-SQL abaixo:
DECLARE @counter SMALLINT; SET @counter = 1; WHILE @counter < 5 BEGIN SELECT RAND() Random_Number SET @counter = @counter + 1 END; GO
Desafio RAND + Transact SQL
Finalmente como desafio e desenvolvimento, elabore um script T-SQL que forneça 4 números inteiros diferentes.
Poste seu script aqui nos comentários 👇🏻 👍🏻
Materiais e leituras que recomendamos para você:
- Instalação SQL Server 2017 Express + SSMS + Adventure Works
- Instalação do SQL Server no Linux
- Monitorar progresso de Backup e Restore no SQL Server
- Obtendo a quantidade de registros das tabelas de um banco de dados SQL Server
- Utilização de Memória no SQL Server
Referência:
https://docs.microsoft.com/pt-br/sql/t-sql/functions/rand-transact-sql?view=sql-server-ver15
Obrigado
Espero que este tutorial possa lhe ajudar a aumentar seus conhecimentos no banco de dados SQL Server.
Então, se você gostou desta publicação, compartilhe com seus amigos ou nos acompanhe pelas redes sociais.
Você pode nos ajudar a criar mais conteúdos como este. Como ?
Prestigie nossos anunciantes conhecendo seus produtos e serviços.
Como resultado, você certamente ajuda a gente a crescer e a produzir mais conteúdos como este.
Vamos lá, é simples e rápido
Obrigado e um grande abraço