mysql随机函数的例子,用过mysql的同学都知道rand()函数是最最常见的,要实现随机数的功能,还非得借助rand(),它的作用是产生0到1直接的随机数,下面就列出几个常见的用例。
生成随机的三位数SELECT ceiling(rand()*899+101)-1 as随机三位数
ceiling是向上取整,rand()为0时,生成的三位数是ceiling(0+101)-1=100
rand()为1时,生成的三位数是ceiling(899+101)-1=999
网络上的SELECT ceiling(rand()*900+100)来生成随机的三位数是会出问题的,当rand()为1时,最终的结果就是1000了
生成随机的250到520的数select round(rand()*270)+250as随机250到520的数
--或者
select floor(rand()*270+250)随机250到520的数
round是四舍五入,floor是向下取整
生成随机的11位手机号码,利用自定义函数来实现drop functionif exists phonenumber;
delimiter $$
create function phonenumber () returns varchar (11)
begin
declare str varchar (11)default'';
declare i intdefault0;
declare prefix varchar (255)default"133,134,135,136,137,138,139,150,151,152,188,189";
set str = concat( str, substring( prefix, round( rand()*2)*4+1,3));
while i <=8do
set i = i +1;
set str = concat( str,round((rand()*9)));
endwhile;
return str;
end $$
delimiter ;
select phonenumber()as手机号码;
前三位号段可自行补充
好久不写mysql函数,有些陌生了,连续报了几个错误才修正好。错误一,就是忘记改delimiter,到了有分号的语句就报错。错误二,是忘了要把声明语句尽量靠前写。本例中,如果把declare i int default 0;放到set str = concat( str, substring( prefix, round( rand( ) * 2 ) * 4+1, 3 ) );后是万万不行的。