segunda-feira, 16 de junho de 2014

Inteiros aleatórios do MySQL.

Original post: http://anothermysqldba.blogspot.com/2014/06/mysql-random-integers.html

Esta não é uma característica nova, por qualquer meio, mas é uma pergunta que eu tenho acontecer para ver aparecer de vez em quando. Assim, um exemplo rápido é seguinte. 

Para gerar um número aleatório dentro do MySQL você pode utilizar o piso e as funções de Rand. Os MySQL documentos manuais esta aqui: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html # function_rand 

" Para obter um número inteiro R aleatório no intervalo i <= R <j, use a expressão FLOOR (i + RAND () * (j - i)) " 

Então, para dar um exemplo: 

> SET @I = 3; # lower range 
> SET @J = 43 - @I; # max range minus lower range 

> SELECT FLOOR( @I + (RAND() * @J )) as lottery_numbers\G 
*************************** 1. row *************************** 
lottery_numbers: 4 
1 row in set (0.00 sec) 
> SELECT FLOOR( @I + (RAND() * @J )) as lottery_numbers\G 
*************************** 1. row *************************** 
lottery_numbers: 8 
1 row in set (0.00 sec 
> SELECT FLOOR( @I + (RAND() * @J )) as lottery_numbers\G 
*************************** 1. row *************************** 
lottery_numbers: 15 
1 row in set (0.00 sec 
> SELECT FLOOR( @I + (RAND() * @J )) as lottery_numbers\G 
*************************** 1. row *************************** 
lottery_numbers: 16 
1 row in set (0.00 sec 
> SELECT FLOOR( @I + (RAND() * @J )) as lottery_numbers\G 
*************************** 1. row *************************** 
lottery_numbers: 23 
1 row in set (0.00 sec 
> SELECT FLOOR( @I + (RAND() * @J )) as lottery_numbers\G 
*************************** 1. row *************************** 
lottery_numbers: 42 
1 row in set (0.00 sec