生成测试数据

MySQL函数和存储过程生成电话号码

一个人想着一个人 提交于 2020-04-26 05:44:45
电话号码是有 11 位数字组成,所以在生成电话号码之前我们先来看一看怎样通过函数生成字符串。 DELIMITER $$ CREATE FUNCTION rand_num(n int) RETURNS VARCHAR(255) BEGIN DECLARE chars_str varchar(20) DEFAULT '0123456789'; DECLARE return_str varchar(255) DEFAULT ''; DECLARE i INT DEFAULT 0; WHILE i < n DO SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*10 ),1)); SET i = i +1; END WHILE; RETURN return_str; END $$ DELIMITER ; MySQL 的随机函数 rand() 返回的是一个 float 类型的数字 n , n 的取值范围是 0<=n<1 。值得注意的是能取到 0 但是不能取到 1 。 显然上面的 rand()*10+1 的取值范围为 [1,11), 能取到 1 但是不能取到 11 ,内置函数 floor 的作用是向下取整。所以 floor(rand()*10+1) 的取值范围为 [1,10] 。 因为 MySQL