Saltar al contenido principal
Documentos
FuncionesExpresionesKeywordsDeclaracionesCláusulas

Función RAND() de MySQL

La función `RAND()` de MySQL genera un número aleatorio de coma flotante entre 0 y 1. Se suele utilizar para crear valores aleatorios o seleccionar registros aleatorios de una base de datos.

Utilización

La función `RAND()` se utiliza cuando es necesario introducir aleatoriedad, como barajar resultados o generar IDs aleatorios. Se puede invocar con o sin un valor semilla opcional para producir una secuencia determinista de números aleatorios.

RAND([seed])

En esta sintaxis, `RAND()` devuelve un número aleatorio. Proporcionar una `[semilla]` generará una secuencia repetible de números aleatorios, consistente dentro de la misma sesión o contexto. Ten en cuenta que las distintas versiones y configuraciones de MySQL pueden gestionar las semillas de forma ligeramente diferente.

Ejemplos

1. Generar un número aleatorio

SELECT RAND();

Este ejemplo genera un número aleatorio entre 0 y 1 cada vez que se ejecuta la consulta, produciendo números diferentes sin semilla.

2. Generar un número aleatorio con una semilla

SELECT RAND(10);

Aquí, `RAND()` utiliza el valor semilla 10, produciendo el mismo número aleatorio cada vez dentro de la misma sesión, lo que resulta útil para realizar pruebas.

3. Seleccionar registros aleatorios

SELECT * 
FROM products 
ORDER BY RAND() 
LIMIT 5;

Esta consulta recupera 5 filas aleatorias de la tabla `productos`, utilizando `RAND()` para barajar el orden de los resultados.

Consejos y buenas prácticas

  • Utiliza semillas para la reproducibilidad. Utiliza valores semilla durante las pruebas para obtener números aleatorios consistentes dentro de la misma sesión.
  • Ten cuidado con los grandes conjuntos de datos. Utilizar `ORDER BY RAND()` en tablas grandes puede consumir muchos recursos; considera métodos alternativos como añadir una columna con valores aleatorios pregenerados o utilizar una técnica de muestreo para obtener un mejor rendimiento.
  • Limita las selecciones aleatorias. Utiliza siempre `LÍMITE` al seleccionar registros aleatorios para evitar un tratamiento excesivo de los datos.
  • Evita utilizar RAND() con fines criptográficos. No es adecuado para aplicaciones seguras o funciones criptográficas. Considera utilizar funciones como `UUID()` de MySQL para generar identificadores únicos o recurrir a bibliotecas externas para la aleatoriedad criptográfica.
  • Comprende la precisión. El número aleatorio generado por `RAND()` es un número en coma flotante entre 0 y 1 con doble precisión, lo que es crucial para aplicaciones en las que la precisión es importante.

Perfeccionamiento de SQL para principiantes

Adquiere los conocimientos de SQL para interactuar con tus datos y consultarlos.
Empieza a aprender gratis