MySQL使用SQL语句产生正整数随机数的技巧

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 ~ 14

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


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


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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值