最近在进行MySQL优化的学习,过程中需要造各种不同类型的数据。目前需要使用到随机手机号以及随机时间的方法,网查查的都不算好用,现依靠网上提供的几种方案整理如下:
生成随机手机号
我国使用的手机号码为11位,其中每段编码代表含义不同:
前3位:网络识别号(运营商代码)
4到7位:归属地区代码
8到11位:用户代码
如有特必须要更改对应的head、content部分即可。
CREATE FUNCTION `generatePhone`() RETURNS char(11) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE head VARCHAR(100) DEFAULT '000,156,136,176,183';
DECLARE content CHAR(10) DEFAULT '0123456789';
DECLARE phone CHAR(11) DEFAULT substring(head, 1+(FLOOR(1 + (RAND() * 3))*4), 3);
DECLARE i int DEFAULT 1;
DECLARE len int DEFAULT LENGTH(content);
WHILE i<9 DO
SET i=i+1;
SET phone = CONCAT(phone, substring(content, floor(1 + RAND() * len), 1));
END WHILE;
RETURN phone;
END
测试结果

生成随机日期
下面代码是生成1990-01-01到2019-01-01之间的随机时间,如果需要请修改你要用的时间间隔即可。
SELECT
CONCAT(
(
SELECT
DATE(
FROM_UNIXTIME(
UNIX_TIMESTAMP('1990-01-01') + FLOOR(
RAND() * (
UNIX_TIMESTAMP('2019-01-01') - UNIX_TIMESTAMP('1990-01-01') + 1
)
)
)
) AS DATE
),
' ',
FLOOR(8 + RAND() * 10),
':',
FLOOR(10 + RAND() * 49),
':',
FLOOR(10 + RAND() * 49)
)
FROM
DUAL
测试结果


博主在MySQL优化学习中需造不同类型数据,整理了生成随机手机号和随机日期的方法。手机号为11位,各段编码含义不同,可按需更改对应部分;随机日期代码可生成1990 - 01 - 01到2019 - 01 - 01间的时间,也能修改时间间隔。


被折叠的 条评论
为什么被折叠?



