用MySQL里的Rand()生成 不连续重复 的随机数年龄以及随机姓名字符串(二)

2014-11-24 17:15:10 · 作者: · 浏览: 1
TS `pro3`$$


4.CREATE PROCEDURE `pro3`(num INT)


5.BEGIN


6.DECLARE fname CHAR(1);


7.DECLARE name1 CHAR(1);


8.DECLARE name2 CHAR(1);


9.DECLARE fullname VARCHAR(3);


10.DECLARE pre_fullname VARCHAR(3) DEFAULT \'\';


11.DECLARE age INT;


12.DECLARE i INT DEFAULT 1;


13.WHILE i <=num DO


14. SET fname = SUBSTRING(\'赵钱孙李周吴郑王\',FLOOR(1+8*RAND()),1);


15. SET name1 = SUBSTRING(\'一二三四五六七八九十甲乙丙丁\',ROUND(1+14*RAND()),1);


16. SET name2 = SUBSTRING(\'一二三四五六七八九十甲乙丙丁\',ROUND(1+14*RAND()),1);


17.


18. IF ROUND(RAND())=0 THEN


19. SET fullname = CONCAT(fname,name1);


20. END IF;


21. IF ROUND(RAND())=1 THEN


22. SET fullname = CONCAT(fname,name1,name2);


23. END IF;


24.


25. SET age = FLOOR(20+31*RAND());


26. /* 给临时变量赋值,看最新的一条记录的name值 */


27. SELECT NAME INTO pre_fullname FROM user1 ORDER BY id DESC LIMIT 1;


28. /* 开始判断,如果刚赋值的name跟上一次赋值的name值一样,就跳过,i保持不变,继续取值;否则i+1,继续循环取值*/


29. IF fullname=pre_fullname AND i>1 THEN


30. SET i=i;


31. ELSEIF fullname IS NULL THEN


32. SET i=i;


33. ELSE


34. INSERT INTO user1 VALUES(NULL,fullname,age);


35. SET i = i + 1;


36. END IF ;


37.END WHILE;


38.END$$


39.DELIMITER