MySQL 函数
CEILING() 向上取整 FLOOR() 向下取整 RAND() 随机生成 0~1 之间的小数(0<1)
SELECT FLOOR(5.98), CEILING(5.16), RAND();
结果:
Mysql 随机生成 指定 位数 的随机整数
-- 生成 3 位的随机整数
SELECT CEILING(RAND() * 900 + 100);
-- 生成 4 位的随机整数
SELECT CEILING(RAND() * 9000 + 1000);
-- 生成 5 位的随机整数
SELECT CEILING(RAND() * 90000 + 10000);
-- 生成 6 位的随机整数
SELECT CEILING(RAND() * 900000 + 100000);
...
Mysql 随机生成 11位 手机号(批量执行会存在重复手机号,视情况使用)
SELECT TRIM(CONCAT('1', ELT(floor(rand() * 6 + 1), '3', '4', '5', '7', '8', '9'), TRIM(CAST(CEILING(RAND() * 900000000 + 100000000) AS CHAR(9))))) AS phone;
说明:
- 生成 0~1 之间的随机小数
0 < RAND() <1
- 乘以 9000,变成 0~9000 之间随机小数
0 < RAND*9000 < 9000
- 加上 1000,变成 0~10000 之间的随机小数
0 < RAND*9000+1000 < 10000
- 使用 CEILING() 函数向上取整,去掉后面的小数,得到一个整数 或 使用 FLOOR() 函数向下取整,都可以
CEILING(RAND()*9000+1000)
FLOOR(RAND()*9000+1000)
注意:
这种生成指定位数随机数还是会存在重复的数据,随机数的位数越少,重复的概率越大。
例 18 位的随机整数(重复率很低):
SELECT CONCAT(YEAR(NOW()), RIGHT(substring_index(RAND(), '.', -1), 8), CEILING(RAND() * 900000 + 100000)) AS id;
你的鼓励将是我创作的最大动力
转载请注明出处:BestEternity亲笔。