Função MySQL RAND()

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 vcom o seguinte valor:

0 <= v < 1.0Linguagem 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 seedargumento é um número inteiro que serve como valor inicial. O seedargumento é 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 employeesde 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 BYclá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 LIMITcláusula para obter um número de linhas aleatórias da employeestabela:

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_BETWEENfunção possui dois parâmetros mine maxe 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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *