mysql大批量生成测试数据
*以下sql均使用于 mysql5.7 和 mysql8.0 *
函数准备
随机生成某个范围内的数字
【创建SQL】
create function generateNum(min int,max int) returns int
begin
return floor(min+rand()*(max+1));
END
【使用SQL】
## 生成10-100之间的随机数
SELECT generateNum(10,91);
随机生成指定长度的英文字符串
【创建SQL】
set global log_bin_trust_function_creators=TRUE;
create function generateStr(n int) returns varchar(255)
begin
declare chars_str varchar(100) default 'abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ';
declare return_str varchar(255) default '';
declare i int default 0;
while (i < n) do
set return_str = concat(return_str,substring(chars_str,floor(1+rand()*52),1));
set i = i+1;
end while;
return return_str;
END
【使用SQL】
## 传参为指定字符串长度
select generateStr(5);
随机生成中文名
【创建SQL】
## 使用时,所在数据的编码需要设置为utf8,涉及到的表也为utf8,编码格式保持一致
CREATE FUNCTION `generateName`() RETURNS varchar(255) CHARSET utf8 DETERMINISTIC
BEGIN -- 开始
DECLARE xing VARCHAR (2056) DEFAULT '赵钱孙李周郑王冯陈楮卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜谢喻柏水贺罗毕安常乐于黄和穆萧尹姚邵湛汪宋茅屈林胡丁陆荣'; -- 定义姓
DECLARE ming VARCHAR (2056) DEFAULT '嘉轩烨伟苑博伟泽熠彤鸿煊博涛烨霖烨华煜祺智宸正豪昊然明杰诚立轩立辉峻熙弘文熠彤鸿煊烨霖哲瀚鑫鹏致远俊驰雨泽烨磊晟睿天佑文昊修洁黎昕远航旭尧鸿涛伟祺轩越泽浩宇瑾瑜皓轩擎苍擎宇志泽睿渊楷瑞轩弘文哲瀚雨泽鑫磊梦琪忆桃慕青问兰尔岚元香初夏沛菡傲珊曼文乐菱痴珊玉惜文香寒新柔语蓉海安夜蓉涵柏水桃醉蓝春儿语琴从彤傲晴语兰菱碧彤元霜怜梦紫寒妙彤曼易南莲紫翠雨寒易烟如萱若南寻真晓亦向珊慕灵以蕊寻雁映易雪柳孤岚笑霜海云凝天沛珊寒云冰旋宛儿绿'; -- 定义名
DECLARE I_xing INT DEFAULT LENGTH(xing)