Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Exemplos de RAND() no SQL Server


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          |
+------------+------------+------------+