假如你對Oracle隨機函數的基本概念不是很了解的話,下面的文章就是對Oracle隨機函數的相關內容的具體介紹,其實我個人認為Oracle隨機函數的取法很簡單,通過dbms_random包調用隨機數的方法大致有4種:
1、dbms_random.normal
這個函數不帶參數,能返回normal distribution的一個number類型,所以基本上隨機數會在-1到1之間。
簡單測試了一下,產生100000次最大能到5左右:
- SQL> declare
- 2 i number:=0;
- 3 j number:=0;
- 4 begin
- 5 for k in 1 .. 100000 loop
- 6 i:= dbms_random.normal;
- 7 if i > j
- 8 then j:=i;
- 9 end if;
- 10 end loop;
- 11 dbms_output.put_line(j);
- 12 end;
- 13 /
- 5.15325081797418404136433867107468983182
- PL/SQL procedure successfully completed
2、dbms_random.random
這個也沒有參數,返回一個從-power(2,31)到power(2,31)的整數值
3、Oracle隨機函數的取法:dbms_random.value
這個函數分為兩種,一種是沒有參數,則直接返回0-1之間的38位小數
- SQL > column value format 9.99999999999999999999999999999999999999
- SQL > select dbms_random.value from dual;
- VALUE
- .58983014999643548701631750396301271752
第二種是加上兩個參數a、b,則返回值在a、b之間的38位小數
- SQL > column value format 999.999999999999999999999999999999999999
- SQL > select dbms_random.value(100,500) value from dual;
- VALUE
- 412.150194612502916808701157054098274240
注意:無論前面幾位,小數點之後都是38位
4、dbms_random.string
這個函數必須帶有兩個參數,前面的字符指定類型,後面的數值指定位數(最大60)
類型說明:
- 'u','U' : upper case alpha characters only
- 'l','L' : lower case alpha characters only'a','A' : alpha characters only (mixed case)
- 'x','X' : any alpha-numeric characters (upper)
- 'p','P' : any printable characters
- SQL > column value format a30
- SQL > select dbms_random.string('u',30) value from dual;
- VALUE