前言:RAND函数,返回在范围0到1.0内的随机浮点值。如果一个整数参数N被指定,它被用作种子值。一,朋友问题描述如下:(1),有一个用户表,有id,用户的真实名字,年龄。通过一段存储过程来实现向表里插入100数据,其中年龄随机姓名姓氏:’赵钱孙李周吴郑王’;,随机取出一个名字:’一段文字字符串’,随机的取出一个字或者两个字要求:随机的名字不能出现连续重复。(2),然后我写出的代码如下:-- 创建用户表,在project里create table user1 (id int not null primary key auto_increment,name varchar(3) not null,age tinyint not null) charset utf8;-- 创建存储过程delimiter $$create procedure pro3(num int)begindeclare fname char(1);declare name1 char(1);declare name2 char(1);declare fullname varchar(3);declare age int;declare i int default 1;while i <=num doset fname = substring('赵钱孙李周吴郑王',floor(1+8*rand()),1); -- 姓set name1 = substring('一二三四五六七八九十甲乙丙丁',floor(1+14*rand()),1); -- 抽一个字set name2 = substring('一二三四五六七八九十甲乙丙丁',floor(1+14*rand()),1); -- 抽一个字if round(rand())=0 then -- 创造一个局部变量fullname代表全名,随机确定是两个字还是三个字set fullname = concat(fname,name1);end if;if round(rand())=1 thenset fullname = concat(fname,name1,name2);end if;set age = floor(20+31*rand()); -- 年龄为20-50的随机insert into user1 values(null,fullname,age); -- 插入数据set i = i + 1;end while;end$$delimiter ;(3),执行结果call pro3(100); -- 执行过程出现的结果出乎意料,出现了很多连续一样的姓名,执行结果如下:mysql> select * from user1;+-----+--------+-----+| id | name | age |+-----+--------+-----+| 1 | 赵三 | 28 || 2 | 孙一四 | 50 || 3 | 郑丁九 | 42 || 4 | 王八 | 47 || 5 | 钱六 | 48 || 6 | 李五 | 26 || 7 | 李五 | 41 || 8 | 郑二三 | 22 || 9 | 孙七六 | 24 || 10 | 孙三 | 21 || 11 | 钱甲二 | 26 || 12 | 孙丙 | 42 || 13 | 孙丙 | 37 || 14 | 赵六丁 | 24 || 15 | 赵六丁 | 40 || 16 | 王十七 | 28 || 17 | 孙九 | 22 || 18 | 李二 | 23 || 19 | 李十 | 23 || 20 | 赵丁甲 | 50 || 21 | 钱一九 | 49 || 22 | 钱一九 | 22 || 23 | 钱一九 | 30 || 24 | 钱一九 | 30 || 25 | 孙五 | 46 || 26 | 吴三十 | 39 || 27 | 赵七二 | 50 || 28 | 赵七二 | 29 || 29 | 孙甲九 | 20 || 30 | 郑乙十 | 35 || 31 | 周一 | 50 || 32 | 吴甲七 | 50 || 33 | 李丁十 | 47 || 34 | 李丁十 | 29 || 35 | 李丁十 | 40 || 36 | 孙五 | 47 || 37 | 赵九丙 | 41 || 38 | 郑三八 | 43 || 39 | 钱七 | 37 || 40 | 钱二一 | 24 || 41 | 王七五 | 45 || 42 | 李十四 | 24 || 43 | 李十四 | 28 || 44 | 孙甲甲 | 49 || 45 | 郑五 | 38 || 46 | 赵甲 | 27 || 47 | 王三 | 39 || 48 | 王三 | 26 || 49 | 王三 | 22 || 50 | 王三 | 30 || 51 | 钱一九 | 44 || 52 | 赵四 | 30 || 53 | 王十九 | 50 || 54 | 王十九 | 34 || 55 | 王十九 | 40 || 56 | 周丙甲 | 20 || 57 | 孙十 | 47 || 58 | 王丙 | 32 || 59 | 王六 | 43 || 60 | 吴三甲 | 29 || 61 | 王乙 | 26 || 62 | 赵甲 | 46 || 63 | 赵甲 | 23 |
mysql随机不连续数据_用MySQL里的Rand()生成 不连续重复 的随机数年龄以及随机姓名字符串...
最新推荐文章于 2024-08-08 22:07:11 发布
本文介绍了一个MySQL存储过程,用于生成不连续、不重复的随机姓名和年龄数据。然而,实际执行结果中出现了姓名连续重复的问题。存储过程中使用了RAND()函数和字符串截取方法来创建随机姓名,但随机性不足导致了错误的结果。
摘要由CSDN通过智能技术生成