Oracle隨機(jī)函數(shù)—dbms_random
1.基礎(chǔ)認(rèn)識
關(guān)于這些函數(shù)及DBMS_RANDOM包的文件都包含在SQLPlus中:
select text from all_source
where name = 'DBMS_RANDOM'
and type = 'PACKAGE' order by line;
◆ TYPE num_array
◆ PROCEDURE terminate
◆ PROCEDURE seed
◆ PROCEDURE initialize
◆ FUNCTION random
◆ FUNCTION value RETURN NUMBER;
◆ FUNCTION value (low IN NUMBER, high IN NUMBER) RETURN NUMBER;
◆ FUNCTION normal RETURN NUMBER;
◆ FUNCTION string (opt char, len NUMBER) RETURN VARCHAR2;
2.應(yīng)用舉例
SELECT DBMS_RANDOM.RANDOM from DUAL;
再進(jìn)一步的要求,比如,產(chǎn)生一個(gè)0-100的隨機(jī)數(shù),稍微變通一下就可以了:
select abs(mod(dbms_random.random,100)) from dual
3.進(jìn)階說明
dbms_random又有新函數(shù)了可以實(shí)現(xiàn)這些功能
FUNCTION value RETURN NUMBER;
FUNCTION value (low IN NUMBER, high IN NUMBER) RETURN NUMBER;
FUNCTION normal RETURN NUMBER;
FUNCTION string (opt char, len NUMBER) RETURN VARCHAR2;
產(chǎn)生N到M之間的隨機(jī)數(shù)
SELECT DBMS_RANDOM.VALUE(N,M) from DUAL;
缺省DBMS_RANDOM.VALUE返回0到1之間的隨機(jī)數(shù)
SQL> select dbms_random.value, dbms_random.value(55,100) from dual;
VALUE DBMS_RANDOM.VALUE(55,100)
--------------- -----------------------------
0.714469037747011 68.5593418279622
NORMAL函數(shù)返回服從正態(tài)分布的一組數(shù)。此正態(tài)分布標(biāo)準(zhǔn)偏差為1,期望值為0。這個(gè)函數(shù)返回的數(shù)值中有68%是介于-1與+1之間,95%介于-2與+2之間,99%介于-3與+3之間。
最后,是STRING函數(shù)。它返回一個(gè)長度達(dá)60個(gè)字符的隨機(jī)字符串。
用DBMS_RANDOM生成文本和日期值
數(shù)字、文本字符串和日期都是用戶會在表格里碰到的三種常見數(shù)據(jù)類型。雖然你可以用PL/SQL程序包里的DBMS_RANDOM隨 ......