select
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作與策劃設(shè)計(jì),明水網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:明水等地區(qū)。明水做網(wǎng)站價(jià)格咨詢:028-86922220
to_char(sysdate,'yyyymmdd')||lpad(round(dbms_random.value(1,999999999)),9,0)
from
dual;
解釋一下,to_char(sysdate,'yyyymmdd')是求得日期,也就是當(dāng)前日期的年月日,||是連接符號(hào)
round(dbms_random.value(1,999999999)是取隨機(jī)數(shù)的整數(shù)位,round是四舍五入,從1-99999999之間取
lpad(9,0)是個(gè)左補(bǔ)0函數(shù),如果選出的隨機(jī)數(shù)為1,則前邊就是8個(gè)0補(bǔ)充
Oracle dbms_random包主要用于獲得隨機(jī)數(shù),可以為數(shù)字也可以為字母等,還可以實(shí)現(xiàn)混拼。
常用函數(shù)
生成一個(gè)0~1間的隨機(jī)小數(shù)(包括0,不包括1):
生成一個(gè)1~10間的隨機(jī)小數(shù)(包括1和不包括10):
dbms_random.random
The RANDOM function produces integers in the range [-2^^31, 2^^31),注意,區(qū)間為左閉右開(kāi)。
隨機(jī)從students表中獲取10條記錄
----------------------------------------------------------
dbms_random.string
生成一個(gè)指定模式指定位數(shù)的隨機(jī)字符串,可選模式如下:
2022-3-26
DBMS_RANDOM包提供了內(nèi)置的隨機(jī)數(shù)生成器。
大多數(shù)語(yǔ)言的隨機(jī)函數(shù)生成器都需要提供一個(gè)種子,在Oracle中,選取種子的過(guò)程叫做初始化,再執(zhí)行隨機(jī)函數(shù)之前,可以不用顯式地執(zhí)行初始化,Oracle會(huì)自動(dòng)使用日期、用戶ID、進(jìn)程ID來(lái)進(jìn)行初始化。當(dāng)然,也可以顯式地初始化或者叫自定義初始化。
val參數(shù)表示種子數(shù)字
字符串長(zhǎng)度最多可以為2000.
RANDOM函數(shù)的返回值取值范圍是[ -2 31 ,2 31 ],因此如果我們?nèi)粝氲玫絒-1,1]范圍內(nèi)的偽隨機(jī)結(jié)果:
如果是[0,1],取絕對(duì)值即可
若想[m,n] (mn)這種形式,例如[3,9]
[m,n] (mn)這種形式的一般表達(dá)式為
select abs(dbms_random.random/power(2,32))*(n-m)+m from dual;
在RANDOM函數(shù)的示例中,我們已經(jīng)討論了 [0,1] 區(qū)間和 [m,n](mn) 區(qū)間上的隨機(jī)數(shù)的生成方法,而VALUE函數(shù)即可以生成 [0,1] 上的隨機(jī)數(shù),又可以生成 [m,n](mn) 上的隨機(jī)數(shù),
當(dāng)沒(méi)有參數(shù)時(shí),返回 [0,1] 上的隨機(jī)數(shù)。
low參數(shù)表示最小值,high參數(shù)表示最大值,返回 [low,high] 區(qū)間內(nèi)的隨機(jī)數(shù)
opt參數(shù)控制字符串的大小寫(xiě)格式,可選值及含義如下:
‘u’或'U':表示大寫(xiě)字母
‘l’或‘L’:表示小寫(xiě)字母
‘a(chǎn)’或‘A’:表示大小寫(xiě)混合
‘x’或‘X’:表示大寫(xiě)字母和數(shù)字混合
‘p’或‘P’:表示任意可顯示字符
len表示字符串長(zhǎng)度
oracle隨機(jī)數(shù) 需要用?dbms_random
ORACLE的PL/SQL提供了生成隨機(jī)數(shù)和隨機(jī)字符串的多種方式,羅列如下:
1、小數(shù)( 0 ~ 1)
select?dbms_random.value?from?dual;
2、指定范圍內(nèi)的小數(shù) ( 0 ~ 100 )
select?dbms_random.value(0,100)?from?dual;
3、指定范圍內(nèi)的整數(shù) ( 0 ~ 100 )
select?trunc(dbms_random.value(0,100))?from?dual;
4、長(zhǎng)度為20的隨機(jī)數(shù)字串
select?substr(cast(dbms_random.value?as?varchar2(38)),3,20)?from?dual;
5、正態(tài)分布的隨機(jī)數(shù)
select?dbms_random.normal?from?dual;
6、隨機(jī)字符串
select?dbms_random.string(opt,?length)?from?dual;
opt可取值如下:
'u','U' ? ?: ? ?大寫(xiě)字母
'l','L' ? ?: ? ?小寫(xiě)字母
'a','A' ? ?: ? ?大、小寫(xiě)字母
'x','X' ? ?: ? ?數(shù)字、大寫(xiě)字母
'p','P' ? ?: ? ?可打印字符
7、隨機(jī)日期
select?to_date(2454084+TRUNC(DBMS_RANDOM.VALUE(0,365)),'J')?from?dual
通過(guò)下面的語(yǔ)句獲得指定日期的基數(shù)
select?to_char(sysdate,'J')?from?dual;
8、生成GUID
select?sys_guid()?from?dual;