Resumo : neste tutorial, você aprenderá como usar a RAND()
função MySQL para obter um número aleatório.
Introdução à função MySQL RAND()
A RAND()
função retorna um número aleatório v
com o seguinte valor:
0 <= v < 1.0
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Aqui está a sintaxe da RAND()
função:
RAND(seed)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe, o seed
argumento é um número inteiro que serve como valor inicial. O seed
argumento é opcional.
O exemplo a seguir usa a RAND()
função para obter um número aleatório entre 0 e 1:
SELECT RAND();
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+--------------------+
| RAND() |
+--------------------+
| 0.6090137591669464 |
+--------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Se você usar um valor inicial constante, a RAND()
função retornará o mesmo valor todas as vezes.
Por exemplo, executar a seguinte instrução que usa a RAND()
função com o mesmo valor inicial retornará o mesmo número aleatório:
SELECT RAND(1);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Na prática, muitas vezes você deseja obter um número inteiro aleatório R onde i <= R < j.
Para fazer isso, você pode combinar a RAND()
função com a função FLOOR() da seguinte forma:
FLOOR(i + RAND() * (j − i))
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Por exemplo, o seguinte retorna um número aleatório entre 1 e 10:
SELECT FLOOR(1 + RAND() * 9);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-----------------------+
| FLOOR(1 + RAND() * 9) |
+-----------------------+
| 5 |
+-----------------------+
1 row in set (0.01 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Função MySQL RAND() com exemplo de dados de tabela
Usaremos o banco de dados employees
de exemplo para a demonstração:
Se o número de linhas em uma tabela for pequeno, você poderá usar a RAND()
função na ORDER BY
cláusula para classificar as linhas de uma tabela aleatoriamente:
SELECT
firstName
FROM
employees
ORDER BY
RAND();
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Você também pode usar a LIMIT
cláusula para obter um número de linhas aleatórias da employees
tabela:
SELECT
firstName
FROM
employees
ORDER BY
RAND()
LIMIT 5;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A consulta retorna linhas diferentes cada vez que você executa a consulta.
Criando uma função aleatória que retorna um número inteiro aleatório em um intervalo de números inteiros
Se você deseja encontrar frequentemente um número inteiro aleatório entre dois números inteiros, você pode criar uma função armazenada como esta:
DELIMITER $$
CREATE FUNCTION RAND_BETWEEN(min INT, max INT)
RETURNS INT
DETERMINISTIC
BEGIN
RETURN FLOOR(min + (RAND() * (max-min)));
END $$
DELIMITER ;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A RAND_BETWEEN
função possui dois parâmetros min
e max
e retorna um número inteiro aleatório entre eles ( min <= return_integer < max
).
O seguinte mostra como chamar a RAND_BETWEEN()
função para obter um número inteiro aleatório entre 1 e 10:
SELECT RAND_BETWEEN(1,10);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+--------------------+
| RAND_BETWEEN(1,10) |
+--------------------+
| 4 |
+--------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Use a
RAND()
função para obter um número aleatório entre 0 e 1.