mysql产生随机数的方法RAND()
RAND() 产生0~1之间的随机数,例如mysql
在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应该这么写,获得的结果以下sql
select 10000000000000000 + RAND()*(99999999999999999-10000000000000000)
6>取整数部分,SQL以下数据库
SELECT FLOOR(10000000000000000+RAND()*(99999999999999999-10000000000000000))
结果图以下函数
7>很明显,在mysql中,17位的纯数字确定不能为int,如上工程,我设置为char型,第6>中得出的数据若是直接插入到数据库表中,则会出现 4.045002932702194e16 这种数据,所以咱们须要将其转换成char型,采用字符串拼接函数,SQL以下code
SELECT CONCAT(FLOOR(10000000000000000+RAND()*(99999999999999999-10000000000000000)),'')
8>总结:须要产生X位的随机数的算法图片
SELECT FLOOR(X位数据的最小值+RAND()*(X位数据的最大值-X位数据的最小值))
注意:若是X的位数大于11,则须要按照如上将数据由int转成char型。字符串