SQL -- 产生随机数
SQL -- 产生随机数
求是科技 发表于2年前
SQL -- 产生随机数
  • 发表于 2年前
  • 阅读 35
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

mysql产生随机数的方法RAND()
RAND() 产生0~1之间的随机数,例如

输入图片说明

在mysql中,当处理数值时,例如:存在一个float型数值3.86,如果我们只想取整数部分,则可以使用mysql的floor函数。例如

输入图片说明

现在工程需求产生一个17位纯数字char型数据,分析如下
1>17位的纯数字范围10000000000000000~99999999999999999
2>产生一个0~1之间的随机数,如:0.12345678901234567
3>我们取上述随机数的临界值,即0或者1,则17位随机数的范围0~99999999999999999
4>我们要保证位数为17位,因此低临界值的最小数据应该是10000000000000000
5>很容易想到SQL应该这么写,得到的结果如下

select 10000000000000000 + RAND()*(99999999999999999-10000000000000000)

输入图片说明
6>取整数部分,SQL如下

SELECT FLOOR(10000000000000000+RAND()*(99999999999999999-10000000000000000))

结果图如下

输入图片说明
7>很明显,在mysql中,17位的纯数字肯定不能为int,如上工程,我设置为char型,第6>中得出的数据如果直接插入到数据库表中,则会出现 4.045002932702194e16 这种数据,因此我们需要将其转换成char型,采用字符串拼接函数,SQL如下

SELECT CONCAT(FLOOR(10000000000000000+RAND()*(99999999999999999-10000000000000000)),'')

输入图片说明
8>总结:需要产生X位的随机数的算法

SELECT FLOOR(X位数据的最小值+RAND()*(X位数据的最大值-X位数据的最小值))

注意:如果X的位数大于11,则需要按照如上将数据由int转成char型。

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 88
博文 446
码字总数 225614
×
求是科技
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: