MySQL獲取隨機數

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

 

好比,要獲取1-9的隨機數,如此調用便可:spa

select rand_num(1, 9);
View Code
相關文章
相關標籤/搜索