CREATE DEFINER=`root`@`localhost` FUNCTION `rand_name`(n int) RETURNS varchar(16) CHARSET utf8
begin
-- 初始化一个16姓氏字符串,作为姓氏字符库
declare family_str varchar (128) default '陈刘赵钱孙李周吴郑王卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章苏潘奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷汤滕殷罗毕郝邬安常';
-- 初始化一个32名字字符串,作为名字字符库
declare name_str varchar (128) default '梦琪忆柳之桃慕青问兰尔岚元香初夏沛菡傲珊曼文乐菱痴珊恨玉惜文香寒新柔语蓉海安蓉涵柏水桃醉蓝春儿语琴从彤傲晴语兰又菱碧彤元霜怜梦紫寒妙彤曼易南紫翠雨寒易烟如萱若南寻真晓亦向珊慕灵以蕊寻雁映';
-- 记录当前是第几个
declare i int default 0;
-- 记录生成结果
declare full_name varchar(16) default '';
-- 随机名字1、2位标记
declare rand_num int DEFAULT 0;
while i < n do
-- 若获取多个姓名,则用逗号','区分
set full_name = if(i > 0, concat(full_name, ','), full_name);
-- 随机取姓氏
set full_name = concat(full_name, SUBSTR(family_str, floor(1+rand()*16), 1));
-- 随机取名字
set full_name = concat(full_name, SUBSTR(name_str, floor(1+rand()*16), 1));
-- 名字是否为双字
set rand_num = rand()*10;
set full_name = if(rand_num > 5, concat(full_name, SUBSTR(name_str, floor(1+rand()*16), 1)), full_name);
set i = i + 1;
end while;
return full_name;
end