一、dbms_random.normalsql
這個函數不帶參數,用來產生一個介於-1到1之間的38位精度的隨機數,能返回normal distribution的一個number類型,因此基本上隨機數會在-1到1之間。dom
簡單測試了一下,產生100000次最大能到5左右:ide
SQL> select dbms_random.normal from dual;
NORMAL -0.6940304577580136806344822459508580046783
二、dbms_random.random函數
這個也沒有參數,返回一個從-power(2,31)到power(2,31) (--2的31次方)的整數值post
三、dbms_random.value測試
這個函數分爲兩種,一種是沒有參數,則直接返回0-1之間的38位精度的隨機數spa
SQL > select dbms_random.value from dual; VALUE ----------------------------------------- 0 .58983014999643548701631750396301271752
第二種是加上兩個參數a、b,則返回值在a、b之間的38位精度的隨機數orm
SQL > select dbms_random.value(100,500) value from dual; VALUE ----------------------------------------- 412.150194612502916808701157054098274240
注意:不管前面幾位,小數點以後都是38位字符串
此外,若想得到整數:ROUND(dbms_random.value(1,500),0)string
四、dbms_random.string
該函數產生一個隨機字符串,必須帶有兩個參數,語法爲:dbms_random.string(opt in CHAR,len in NUMBER)
參數len指定生成的字符串的長度(最大60);
參數opt指定生成的字符串的樣式,容許的取值及其表示的含義以下表所示:
取值 |
含義 |
‘u’或’U’ |
返回一個由大寫字母組成的字符串 |
‘l’或’L’ |
返回一個由小寫字母組成的字符串 |
‘a’或’A’ |
返回一個由大寫字母和小寫字母組成的字符串 |
‘x’或’X’ |
返回一個由大寫字母和數字組成的字符串 |
‘p’或’P’ |
返回一個由任意的可打印字符組成的字符串 |
例如:要產生一個長度爲6且只包括大寫字母的字符串,能夠這樣寫: DBMS_RANDOM.STRING('U',6)
SQL> SELECT DBMS_RANDOM.string ('U', 6) FROM DUAL; DBMS_RANDOM.STRING('U',6) -------------------------------------- ECQALV