No SQL Server, o T-SQL
RAND()
função permite que você gere um número aleatório. Especificamente, ele retorna um valor flutuante pseudo-aleatório de 0 a 1, exclusivo. A função aceita um argumento opcional que fornece o valor de semente. Para qualquer valor de semente fornecido, os resultados serão sempre os mesmos.
Sintaxe
A sintaxe fica assim:
RAND ( [ seed ] )
Onde semente é uma expressão inteira (tinyint, smallint ou int) que fornece o valor de semente. Se esse argumento não for fornecido, o SQL Server atribuirá uma semente aleatoriamente.
Exemplo 1 – Sem argumentos
Aqui está um exemplo básico para demonstrar o que acontece quando não fornecemos um argumento.
SELECT RAND() Result;
Resultado:
+--------------------+ | Result | |--------------------| | 0.0354675287734768 | +--------------------+
O resultado não é uma constante – será diferente cada vez que você o executar.
Aqui está um exemplo do que acontece quando executamos vários
RAND()
funções juntos. SELECT RAND() 'Result 1', RAND() 'Result 2', RAND() 'Result 3';
Resultado:
+-------------------+------------------+--------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+------------------+--------------------| | 0.999568268427369 | 0.40098746841349 | 0.0606836711764244 | +-------------------+------------------+--------------------+
Exemplo 2 – Usando um valor inicial
Conforme mencionado, você pode passar um argumento para determinar o valor da semente. Isso permite que você influencie a saída da função.
SELECT RAND(8) Result;
Resultado:
+-------------------+ | Result | |-------------------| | 0.713722424011731 | +-------------------+
Nesse caso, a função retornará o mesmo valor todas as vezes se um valor de argumento igual for fornecido. Isso é demonstrado no exemplo a seguir:
SELECT RAND(8) 'Result 1', RAND(8) 'Result 2', RAND(8) 'Result 3';
Resultado:
+-------------------+-------------------+-------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+-------------------+-------------------| | 0.713722424011731 | 0.713722424011731 | 0.713722424011731 | +-------------------+-------------------+-------------------+
Executamos a função três vezes. E como usamos a mesma semente todas as vezes, os resultados foram todos iguais.
Exemplo 3 – Usando RAND() como parte de uma expressão
Você pode usar o
RAND()
funcionam como parte de uma expressão. SELECT RAND()*10 Result;
Resultado:
+------------------+ | Result | |------------------| | 3.32720913214171 | +------------------+
Exemplo 4 – Arredondando o resultado
Também podemos remover a parte fracionária aninhando a função dentro de uma função como
FLOOR()
ou CEILING()
. SELECT CEILING(RAND()*10) Result;
Resultado:
+----------+ | Result | |----------| | 3 | +----------+
Exemplo 5 – Retornando um número inteiro aleatório entre dois números
Você também pode especificar que o número aleatório deve estar entre dois números.
Aqui está um exemplo de geração de um número aleatório entre 5 e 10 (inclusive).
SELECT FLOOR(RAND()*(10-5+1)+5) Result;
Resultado:
+----------+ | Result | |----------| | 9 | +----------+
Vamos executar o mesmo código várias vezes para ver os resultados variados.
SELECT FLOOR(RAND()*(10-5+1)+5) 'Result 1', FLOOR(RAND()*(10-5+1)+5) 'Result 2', FLOOR(RAND()*(10-5+1)+5) 'Result 3';
Resultado:
+------------+------------+------------+ | Result 1 | Result 2 | Result 3 | |------------+------------+------------| | 10 | 7 | 6 | +------------+------------+------------+