Dado que mi enfoque para una consulta de prueba en la que trabajé en esta pregunta no funcionó, estoy intentando otra cosa ahora. ¿Hay alguna manera de decirle a la random()
función de pg que me obtenga solo números entre 1 y 10?
sql
postgresql
random
KB22
fuente
fuente
trunc()
devuelve el mismo tipo de datos que la entrada (como se indica en el manual).trunc(random() * 20)::int
random()
devuelva un valor <1 que cuando se multiplica por 9 sería> = 9 debido a la naturaleza inexacta del tipo de precisión doble . En la práctica, incluso si es posible, sería muy improbable, por supuesto, debido a la precisión de 15 dígitos aproximadamente.width_bucket(random(), 0, 1, 10)
como una alternativaPara resumir y simplificar un poco, puede usar:
Y puedes probar esto como lo menciona @ user80168
fuente
ceil(random() * 10)
resultado 0, me apegaríafloor
.SELECT floor(random() * 10 + 1);
Si está utilizando SQL Server, la forma correcta de obtener un entero es
Dónde
fuente
(trunc (aleatorio () * 10)% 10) + 1
fuente
La versión correcta de la respuesta de hythlodayr.
La salida de
trunc
debe convertirse aINTEGER
. Pero se puede hacer sin éltrunc
. Entonces resulta simple.Genera una salida INTEGER en el rango [1, 10], es decir, tanto 1 como 10 inclusive.
Para cualquier número (flotantes), consulte la respuesta de user80168. es decir, simplemente no lo convierta a
INTEGER
.fuente
En realidad, no sé que quieras esto.
prueba esto
fuente
Este procedimiento almacenado inserta un número rand en una tabla. Cuidado, inserta un número infinito. Deja de ejecutarlo cuando tengas suficientes números.
crea una tabla para el cursor:
VAMOS
Crea una tabla que contenga tus números:
INSERTAR EL GUIÓN:
CREACIÓN Y EJECUCIÓN DEL PROCEDIMIENTO:
Llena tu mesa:
fuente