如何經過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);