天天看点

MySQL 存储过程插入随即号码和多位字符串

首先说一下@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条随机数据。

继续阅读