sql >> Base de Datos >  >> RDS >> Sqlserver

Ejemplos de RAND() en SQL Server

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          |
+------------+------------+------------+