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ù), 可使用以下語(yǔ)句:
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;