MySQL生成随机姓名

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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西瓜不甜柠檬不酸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值