En SQL Server, el T-SQL RAND()
La función le permite generar un número aleatorio. Específicamente, devuelve un valor flotante pseudoaleatorio de 0 a 1, exclusivo.
La función acepta un argumento opcional que proporciona el valor inicial. Para cualquier valor semilla dado, los resultados siempre serán los mismos.
Sintaxis
La sintaxis es así:
RAND ( [ seed ] )
Donde semilla es una expresión entera (tinyint, smallint o int) que proporciona el valor inicial. Si no se proporciona este argumento, entonces SQL Server asigna una semilla al azar.
Ejemplo 1:sin argumentos
Aquí hay un ejemplo básico para demostrar lo que sucede cuando no proporcionamos un argumento.
SELECT RAND() Result;
Resultado:
+--------------------+ | Result | |--------------------| | 0.0354675287734768 | +--------------------+
El resultado no es una constante:será diferente cada vez que lo ejecutes.
Aquí hay un ejemplo de lo que sucede cuando ejecutamos múltiples RAND()
funcionan juntas.
SELECT RAND() 'Result 1', RAND() 'Result 2', RAND() 'Result 3';
Resultado:
+-------------------+------------------+--------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+------------------+--------------------| | 0.999568268427369 | 0.40098746841349 | 0.0606836711764244 | +-------------------+------------------+--------------------+
Ejemplo 2:uso de un valor inicial
Como se mencionó, puede pasar un argumento para determinar el valor inicial. Esto le permite influir en la salida de la función.
SELECT RAND(8) Result;
Resultado:
+-------------------+ | Result | |-------------------| | 0.713722424011731 | +-------------------+
En este caso, la función devolverá el mismo valor cada vez si se proporciona un valor de argumento igual. Esto se demuestra en el siguiente ejemplo:
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 | +-------------------+-------------------+-------------------+
Ejecutamos la función tres veces. Y debido a que usamos la misma semilla cada vez, los resultados fueron todos iguales.
Ejemplo 3:uso de RAND() como parte de una expresión
Puedes usar RAND()
función como parte de una expresión.
SELECT RAND()*10 Result;
Resultado:
+------------------+ | Result | |------------------| | 3.32720913214171 | +------------------+
Ejemplo 4:Redondeo del resultado
También podemos eliminar la parte fraccionaria anidando la función dentro de una función como FLOOR()
o CEILING()
.
SELECT CEILING(RAND()*10) Result;
Resultado:
+----------+ | Result | |----------| | 3 | +----------+
Ejemplo 5:devolución de un entero aleatorio entre dos números
También puede especificar que el número aleatorio debe estar entre dos números.
Este es un ejemplo de cómo generar un número aleatorio entre 5 y 10 (inclusive).
SELECT FLOOR(RAND()*(10-5+1)+5) Result;
Resultado:
+----------+ | Result | |----------| | 9 | +----------+
Ejecutemos el mismo código varias veces para ver los diferentes resultados.
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 | +------------+------------+------------+