¿Es posible en Microsoft SQL Server generar un valor int aleatorio de Min a Max (3-9 ejemplo, 15-99, etc.)
Lo sé, puedo generar de 0 a Max, pero ¿cómo aumentar el borde mínimo?
Esta consulta genera un valor aleatorio de 1 a 6. Necesita cambiarlo de 3 a 6.
SELECT table_name, 1.0 + floor(6 * RAND(convert(varbinary, newid()))) magic_number
FROM information_schema.tables
Agregado 5 segundos después :
Pregunta estúpida, lo siento ...
SELECT table_name, 3.0 + floor(4 * RAND(convert(varbinary, newid()))) magic_number
FROM information_schema.tables
sql
sql-server
sql-server-2008
FSou1
fuente
fuente
Respuestas:
Esto genera un número aleatorio entre 0-9
1 a 6
3 a 6
Dinámico (basado en el comentario de Eilert Hjelmeseth)
Actualizado según los comentarios:
NEWID
genera una cadena aleatoria (para cada fila a cambio)CHECKSUM
toma el valor de la cadena y crea un número%
) divide por ese número y devuelve el resto (lo que significa que el valor máximo es uno menos que el número que usa)ABS
cambia los resultados negativos a positivosfuente
ABS(CHECKSUM(NEWID()) % (@max - @min + 1)) + @min
. Algunas pruebas de mi parte dieron buenos resultados. Si es realmente precisa, creo que esta respuesta podría mejorarse ligeramente incluyéndola.Veo que ha agregado una respuesta a su pregunta en SQL Server 2008 que también puede hacer
Un par de desventajas de este método son
NEWID()
método.pero pensé en agregarlo como otra opción.
fuente
CRYPT_GEN_RANDOM
está realmente destinado a situaciones en las que necesitas un número pseudo aleatorio criptográficamente más seguro.Puedes hacerlo:
Y eso fue tomado directamente de este enlace , realmente no sé cómo dar el crédito adecuado por esta respuesta.
fuente
Agradable y simple, del sitio de Pinal Dave:
http://blog.sqlauthority.com/2007/04/29/sql-server-random-number-generator-script-sql-query/
(Hice un pequeño cambio en @ Upper- para incluir el número superior, agregado 1.)
fuente
Simplemente:
Puede cambiar y editar este código según sus necesidades.
fuente
Aquí está la línea de código simple y única
Para ello, utilice la función SQL Inbuild RAND () .
Aquí está la fórmula para generar un número aleatorio entre dos números (RETORNO INT Rango)
Aquí a es su primer número (mínimo) yb es el segundo número (máximo) en el rango
Nota: También puede usar la función CAST o CONVERT para obtener el número de rango INT.
(CAST (RAND () * (25-10) +10 COMO INT))
Ejemplo:
Aquí está la fórmula para generar un número aleatorio entre dos números (RETORNO DECIMAL Rango)
Ejemplo:
Más detalles verifique esto: https://www.techonthenet.com/sql_server/functions/rand.php
fuente
fuente
SELECT ROUND((6 - 3 * 0.16), 0) SELECT ROUND((6 - 3 * 0.17), 0) SELECT ROUND((6 - 3 * 0.5), 0) SELECT ROUND((6 - 3 * 0.51), 0) SELECT ROUND((6 - 3 * 0.83), 0) SELECT ROUND((6 - 3 * 0.84), 0)
muestra que el 16% cambia para 6, ~ 34% es 5, ~ 34% es 4 y ~ 16% es 3.La respuesta de Lamak como función:
fuente
Paso a paso
Tenga en cuenta que una función definida por el usuario no permite el uso de RAND (). Una solución alternativa para esto (fuente: http://blog.sqlauthority.com/2012/11/20/sql-server-using-rand-in-user-defined-functions-udf/ ) es crear una vista primero.
y luego crea la función aleatoria
fuente
En general:
Para tu pregunta:
<=>
fuente