sql产生区间随机整数

mac2025-01-22  86

mysql里的rand()函数不同于java,随机数会有15位小数

随机数函:rand() * 10,产生0~0.999999999999999(小数点后15位)

1)配合floor函数产生随机正整数的公式

向下取整函数:floor(),正小数取整,负小数-1取整

用法:

select ceiling(10.1) ----> 10

select ceiling(-10.1) ----> -11

从min~max的随机正整数公式:select floor(最小值 + rand() * (最大值 + 1 - 最小值));

例如:

– 查询5~10的随机正整数

SELECT FLOOR(5 + RAND() * (10 + 1 - 5));

为了方便理解,这里还原公式演变过程:

以5~10举例

rand() * 10 ----> 0 ~ 9.999999999999999

floor(rand() * 10) ----> 0 ~ 9

floor(5 + rand() * (10 - 5)) ----> 5 ~ 9

floor(5 + rand() * (10 + 1 - 5)) —> 5 ~ 10

1)配合ceiling函数产生随机正整数的公式向上取整函数:

向上取整函数:ceiling(),正小数+1取整,负小数取整数

用法:

select ceiling(10.1) ----> 11

select ceiling(-10.1) ----> -10

从min~max的随机正整数公式:select ceiling(最小值 - 1 + rand()* (最大值 - (最小值 - 1)))

例如:

– 查询5~10的随机正整数

select ceiling(5 - 1 + rand()* (10 - (5 - 1)))

随机负整数没有研究,应该改吧改吧就行了,毕竟负的项目里用的不会很多

原文链接:https://blog.csdn.net/u011828505/article/details/80265406

最新回复(0)