如何经过MySQL在某个数据区间获取随机数?html
MySQL自己提供一个叫rand的函数,返回的v范围为0 <= v < 1.0。mysql
介绍此函数的MySQL文档也介绍道,能够经过此计算公式FLOOR(i + RAND() * (j – i)),获取i <= v < j的随机数字v。sql
附文档连接:http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_randide
为了书写、调用方便,写一个函数返回随机数字,注意,此函数为了遵应我的习惯,是使用FLOOR(i + RAND() * (j – i + 1))这样的公式,随机数v的范围为i <= v <= j,而非i <= v < j。函数
CREATE FUNCTION rand_num ( start_num INTEGER, end_num INTEGER ) RETURNS INTEGER BEGIN RETURN FLOOR(start_num + RAND() * (end_num - start_num + 1)); END;
好比,要获取1-9的随机数,如此调用便可:spa
select rand_num(1, 9);