溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Oracle隨機(jī)函數(shù)的用法

發(fā)布時(shí)間:2020-04-05 06:47:33 來(lái)源:網(wǎng)絡(luò) 閱讀:964 作者:孤月2012 欄目:關(guān)系型數(shù)據(jù)庫(kù)

簡(jiǎn)單得說(shuō),Oracle 取隨機(jī)數(shù),大多是通過(guò)調(diào)用dbms_random包產(chǎn)生,通過(guò)dbms_random包產(chǎn)生隨機(jī)數(shù)的方法大致有下面4種:

1、dbms_random.normal

這個(gè)函數(shù)不帶參數(shù),用來(lái)產(chǎn)生一個(gè)介于-1到1之間的38位精度的隨機(jī)數(shù),能返回normal distribution的一個(gè)number類型,所以基本上隨機(jī)數(shù)會(huì)在-1到1之間。

    簡(jiǎn)單測(cè)試了一下,產(chǎn)生100000次最大能到5左右:

SQL> select dbms_random.normal from dual;
    NORMAL
-0.6940304577580136806344822459508580046783

2、dbms_random.random

    這個(gè)也沒(méi)有參數(shù),返回一個(gè)從-power(2,31)到power(2,31) (--2的31次方)的整數(shù)值

3、dbms_random.value

    這個(gè)函數(shù)分為兩種,一種是沒(méi)有參數(shù),則直接返回0-1之間的38位精度的隨機(jī)數(shù)

SQL > select dbms_random.value from dual;

 

              VALUE

    -----------------------------------------

     0 .58983014999643548701631750396301271752

    第二種是加上兩個(gè)參數(shù)a、b,則返回值在a、b之間的38位精度的隨機(jī)數(shù)

    SQL > select dbms_random.value(100,500) value from dual;
                  VALUE
    -----------------------------------------
      412.150194612502916808701157054098274240

    注意:無(wú)論前面幾位,小數(shù)點(diǎn)之后都是38位

    此外,若想獲得整數(shù):ROUND(dbms_random.value(1,500),0)

4、dbms_random.string

該函數(shù)產(chǎn)生一個(gè)隨機(jī)字符串,必須帶有兩個(gè)參數(shù),語(yǔ)法為:dbms_random.string(opt in CHAR,len in NUMBER)

參數(shù)len指定生成的字符串的長(zhǎng)度(最大60);

參數(shù)opt指定生成的字符串的樣式,允許的取值及其表示的含義如下表所示:

取值

含義

‘u’’U’

返回一個(gè)由大寫字母組成的字符串

‘l’’L’

返回一個(gè)由小寫字母組成的字符串

‘a(chǎn)’’A’

返回一個(gè)由大寫字母和小寫字母組成的字符串

‘x’’X’

返回一個(gè)由大寫字母和數(shù)字組成的字符串

‘p’’P’

返回一個(gè)由任意的可打印字符組成的字符串

例如:要產(chǎn)生一個(gè)長(zhǎng)度為6且只包括大寫字母的字符串,可以這樣寫: DBMS_RANDOM.STRING('U',6)

SQL> SELECT DBMS_RANDOM.string ('U', 6) FROM DUAL;    
    DBMS_RANDOM.STRING('U',6)     
--------------------------------------
        ECQALV

 

 

 

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI