批量生成随机手机号码的存储过程和自定义函数

DELIMITER $$

USE `gem`$$

DROP FUNCTION IF EXISTS `getRand`$$

CREATE   FUNCTION `getRand`(counts INTEGER) RETURNS VARCHAR(20)
BEGIN
DECLARE sTemp VARCHAR(20);
DECLARE sTempCounts INTEGER;
SET sTemp = CONCAT( ROUND(ROUND(RAND(),counts)*(POW(10,counts))),”);

IF(CHAR_LENGTH(sTemp)<counts) THEN

SET sTempCounts = counts – CHAR_LENGTH(sTemp);
SET sTemp = CONCAT(sTemp, RIGHT(CONCAT(POW(10,sTempCounts),”),sTempCounts));
END IF;

RETURN sTemp;
END$$
DELIMITER ;

以上是自定义函数的随机生产功能!多少位自己调用时指定即可,如下:

SELECT CONCAT(159,getRand(8));–此处自定义引用使用8位;同样也可以自定义其他位数,但是不能超过20位;

DELIMITER $$
CREATE PROCEDURE gems()
BEGIN
DECLARE codes INT;
SET codes=1;
WHILE codes<1000 DO
INSERT INTO tele SELECT CONCAT(159,getRand(8));
SET codes=codes+1;
END WHILE;
END;
以上自定义的为生产tele表内的手机位数!

CALL gems();调用即可生产!记住建表的时候,存储手机号自动的需为字符类型,不能为整型,否则会出现错误定义!

标签