mysql生成隨機(jī)數(shù)(mysql rand,round,floor,ceiling函數(shù)以及獲得指定范圍隨機(jī)數(shù))

1.rand()函數(shù)只能生成0到1之間的隨機(jī)小數(shù),如果想要生成0到10,0到100就rand()*相應(yīng)的值。

這里寫圖片描述

2.如果想得到整數(shù)就要用到round(x),floor(x)和ceiling(x)。

round(x)是四舍五入 ;
floor(x)是去小于等于x的整數(shù);
ceiling(x)是取大于等于x的整數(shù);
其中round函數(shù)還有round(x,n)的形式,保留n位小數(shù)。


這里寫圖片描述

3.得到指定范圍的隨機(jī)數(shù) round(rand()*(max-min)+min)即可

4.若要在i ≤ R ≤ j 這個(gè)范圍得到一個(gè)隨機(jī)整數(shù)R ,需要用到表達(dá)式 FLOOR(i + RAND() * (j – i + 1))。

例如, 若要在7 到 12 的范圍(包括7和12)內(nèi)得到一個(gè)隨機(jī)整數(shù), 可使用以下語句:

SELECT FLOOR(7 + (RAND() * 6));

5.mysql的表生成大量的隨機(jī)數(shù):

1) 產(chǎn)生0到1000間的隨機(jī)數(shù)
SELECT RAND() * 10000;

對(duì)應(yīng)產(chǎn)生相應(yīng)的整數(shù)
SELECT FLOOR(RAND() * 10000)

2) 使用md5()產(chǎn)生32位隨機(jī)字符串

SELECT MD5(RAND() * 10000)

3) 產(chǎn)生500-1000間的整形
SELECT FLOOR( 500 + RAND() * (1000 - 500))
4) 假設(shè)某表如下結(jié)構(gòu)
CREATE TABLE fact (
dim1 int,
dim2 int,
name varchar(20),
hash varchar(32),
measure1 double
);

則可以自動(dòng)產(chǎn)生適合其結(jié)構(gòu)的大量隨機(jī)記錄
create table names(id int auto_increment primary key, name varchar(20));
insert into names (name) values ('Justin','Jerry','James','Josh','Julien');
select (select name from names where id = 1 + rand() * 4);

這里有一個(gè)表專門產(chǎn)生隨機(jī)的字符串;

INSERT INTO fact
SELECT FLOOR(1+ rand()9999),
FLOOR(1 + rand()
499),
(select name from names where id = 1 + rand() * 4),
MD5(1+rand()*9999),
rand()
FROM fact;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容