首先说一下@x,它表示是一个变量,这样向table插入时,不会把x当作是一个字符,所以我们在做随机数时,应该将x声明为一个变量,可以经行赋值操作。`@SET X = ‘’;
随机数要用到 rand()函数:
SET @x = rand() 这就给@x变量赋值了一个随机数(0<@x<1)
rand()函数只能随机产生一个大于0,小于1的浮点数,所以我们给rand()乘以一个数,再对它进行取整操作就可以得到一个多位的字符串了 例如:
SET @y = FLOOR( RAND()*10000+1 ); #就可以得到一个5位的一个字符串。
生成11位电话号码的代码如下:
DELIMITER $$
CREATE PROCEDURE aa()
BEGIN
SET @x = 0;
SET @y = 1;
SET @z = '35789';
SET @i = 0;
SET @k = 0;
SET @d = 0;
#产生随机字符串
SET @str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
SET @str1= '';
ins: LOOP
SET @x = @x + 1;
IF @x = 4 THEN # 循环
LEAVE ins;
END IF;
SET @d = FLOOR(RAND()*5)+1;
SET @k = SUBSTRING(@z,@d,@d-1);
SET @i = FLOOR(RAND()*1000000000);
SET @y = concat(1,@d,@i);
SELECT @str1;
SELECT @y;
#产生随机4位字符串
SET @str1 = concat( SUBSTRING(@str,FLOOR(RAND()*64)+1,1),SUBSTRING(@str,FLOOR(RAND()*64)+1,1), SUBSTRING(@str,FLOOR(RAND()*64)+1,1), SUBSTRING(@str,FLOOR(RAND()*64)+1,1) );
SELECT @str1;
END LOOP ins;
END;
$$
DELIMITER ;
将@x的值改成100001,既可以向table插入100000条随机数据。