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 ) );後是萬萬不行的。