Mysql使用函數生成指定隨機字段內容。
函數rand_name生成隨機字符串:
1 drop function if exists rand_name; 2 delimiter // 3 -- 生成用戶姓名 4 create definer=`root`@`192.168.1.244` function `rand_name`(n int) returns varchar(255) charset utf8 5 begin 6 declare char_str varchar(255) default '哈哈章與張霞笑小歐由於語塔堆太湖想笑一二三四五六七八九十宇宇你是最耀眼的星星再干一杯永遠生命不過短暫的煙火愛你所愛無問西東'; 7 declare return_name varchar(255) default ''; 8 declare i int default 0; 9 while i < n do 10 set return_name = concat(return_name, substring(char_str, floor(1+rand()*30),1)); 11 set i = i + 1; 12 end while; 13 return return_name; 14 end//
delimiter ;
函數get_phone生成電話號碼,函數phone_head用於生成電話號碼頭部,利用函數rand_string生成號碼后8位:
1 -- 生成電話號碼 2 drop function if exists `phone_head`; 3 delimiter // 4 create definer=`root`@`192.168.1.243` function `phone_head`() returns char(3) charset utf8 5 begin 6 declare head char(3); 7 declare bodys varchar(225) default'130 131 132 133 134 135 136 137 138 139 186 187 189 151 157'; 8 declare starts int; 9 set starts = 1 + floor(rand()*15)*4 ; 10 set head =trim(substring(bodys,starts,3)); 11 return head; 12 end// 13 delimiter ; 14 15 -- 生成隨機數字串 16 drop function if exists `rand_string`; 17 delimiter // 18 create definer=`root`@`192.168.1.243` function `rand_string`(n int) returns varchar(255) charset utf8 19 begin 20 declare char_str varchar(255) default '0123456789'; 21 declare return_str varchar(255) default ''; 22 declare i int default 0; 23 while i < n do 24 set return_str=concat(return_str,substring(char_str,floor(1+rand()*10),1)); 25 set i=i+1; 26 end while; 27 return return_str; 28 end // 29 delimiter ; 30 31 drop function if exists `get_phone`; 32 delimiter // 33 create definer=`root`@`192.168.1.243` function `get_phone`() returns varchar(20) charset utf8 34 begin 35 declare phone varchar(20); 36 set phone = trim(concat(phone_head(),rand_string(8))); 37 return phone; 38 end // 39 delimiter ;
函數randDate生成指定年份之間的任意年份:
1 -- 隨機生成一個1949年到1999之間的日期 2 drop function if exists `randDate`; 3 delimiter // 4 create definer=`root`@`192.168.1.243` function `randDate`(n year) returns varchar(255) charset utf8 5 begin 6 declare aDate char(10) default ''; 7 set aDate=concat(n+floor((rand()*50)),'-', 8 lpad(floor(2 + (rand() * 11)),2,0),'-', 9 lpad(floor(3 + (rand() * 20)),2,0)); 10 return aDate; 11 end// 12 delimiter ;
函數randDatetime生成任意時間點:
1 -- 函數randDatetime:隨機生成一個時間點函數 2 drop function if exists `randDatetime`; 3 delimiter // 4 create definer=`root`@`192.168.1.243` function `randDatetime`(n year, num int) returns varchar(255) charset utf8 5 begin 6 declare aDatetime varchar(255) default ''; 7 set aDatetime=concat(concat(n+floor((rand()*num)),'-', 8 lpad(floor(2 + (rand() * 11)),2,0),'-', 9 lpad(floor(3 + (rand() * 25)),2,0)), 10 ' ', 11 concat(lpad(floor(0 + (rand() * 23)),2,0),':', 12 lpad(floor(0 + (rand() * 60)),2,0),':', 13 lpad(floor(0 + (rand() * 60)),2,0))); 14 return aDatetime; 15 end// 16 delimiter ;
