婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > Oracle生成隨機(jī)數(shù)字、字符串、日期、驗(yàn)證碼及 UUID的方法

Oracle生成隨機(jī)數(shù)字、字符串、日期、驗(yàn)證碼及 UUID的方法

熱門標(biāo)簽:網(wǎng)貸外呼系統(tǒng)合法嗎 安陽企業(yè)電銷機(jī)器人供應(yīng)商 杭州網(wǎng)絡(luò)外呼系統(tǒng)運(yùn)營商 手機(jī)地圖標(biāo)注門店 電銷套路機(jī)器人 地圖標(biāo)注效果的制作 鶴壁電話機(jī)器人價(jià)格 地圖標(biāo)注坐標(biāo)圖標(biāo) 汽車4s店百度地圖標(biāo)注店

在日常生活中,隨機(jī)數(shù)對(duì)于我們而言并不陌生,例如手機(jī)短信驗(yàn)證碼就是一個(gè)隨機(jī)的數(shù)字字符串;對(duì)于統(tǒng)計(jì)分析、機(jī)器學(xué)習(xí)等領(lǐng)域而言,通常也需要生成大量的隨機(jī)數(shù)據(jù)用于測(cè)試、數(shù)據(jù)抽樣、算法驗(yàn)證等。那么今天我們就來談?wù)勅绾卧?Oracle 數(shù)據(jù)庫中生成隨機(jī)數(shù)據(jù)。

📝計(jì)算機(jī)生成的都是偽隨機(jī)數(shù),并不是真正的物理隨機(jī)數(shù)。

生成隨機(jī)數(shù)字

Oracle 提供了一個(gè)系統(tǒng)程序包 DBMS_RANDOM,可以用于生成隨機(jī)數(shù)據(jù),例如隨機(jī)數(shù)字、隨機(jī)字符串等。

生成 0 到 1 之間的隨機(jī)數(shù)

DBMS_RANDOM.VALUE 函數(shù)可以用于生成一個(gè)大于等于 0 小于 1 的隨機(jī)數(shù)字。例如:

SELECT dbms_random.value FROM dual;
VALUE     |
----------------------------------------|
0.82366672879802619203358096665727275462|

SELECT dbms_random.value FROM dual;
VALUE     |
----------------------------------------|
0.47093028485681981896753470853250955607|

DBMS_RANDOM.VALUE 函數(shù)返回的數(shù)據(jù)包含 38 位小數(shù),每次返回不同的數(shù)據(jù)。

有時(shí)候,例如測(cè)試時(shí),我們想要確保每次運(yùn)行時(shí)生成相同的隨機(jī)數(shù)。這種情況下,我們可以使用存儲(chǔ)過程 DBMS_RANDOM.SEED 設(shè)置一個(gè)隨機(jī)數(shù)種子,然后再創(chuàng)建隨機(jī)數(shù)就可以返回固定的數(shù)值。例如:

CALL dbms_random.seed(1);
SELECT dbms_random.value FROM dual;
VALUE     |
----------------------------------------|
0.75096444209816859425547820733985992585|

CALL dbms_random.seed(1);
SELECT dbms_random.value FROM dual;
VALUE     |
----------------------------------------|
0.75096444209816859425547820733985992585|

從結(jié)果可以看出,相同的種子返回了相同的隨機(jī)數(shù)。每次運(yùn)行隨機(jī)數(shù)函數(shù)之前,都需要執(zhí)行一次 DBMS_RANDOM.SEED 過程。

📝除了整數(shù)類型的種子數(shù)之外,也可以使用字符串作為隨機(jī)數(shù)的種子。

生成指定范圍內(nèi)的隨機(jī)數(shù)

DBMS_RANDOM.VALUE 函數(shù)也可以接收兩個(gè)輸入?yún)?shù):

DBMS_RANDOM.VALUE(
 low IN NUMBER,
 high IN NUMBER)
RETURN NUMBER;

這種形式的函數(shù)將會(huì)返回一個(gè)大于等于 low,小于 high 的隨機(jī)數(shù)。例如:

CALL dbms_random.seed(1);
SELECT dbms_random.value(10, 20) FROM dual;
DBMS_RANDOM.VALUE(10,20)  |
----------------------------------------|
17.5096444209816859425547820733985992585|

以上示例返回了一個(gè)大于等于 10,小于 20 的數(shù)字。

如果想要生成某個(gè)范圍內(nèi)的隨機(jī)整數(shù),可以利用 DBMS_RANDOM.VALUE 加上 TRUNC 函數(shù)實(shí)現(xiàn)。例如:

CALL dbms_random.seed(1);
SELECT trunc(dbms_random.value(10, 20)) v FROM dual;
V |
--|
17|

 

注意,以上語句返回的是大于等于 10,小于等于 19(不是 20)的整數(shù)。

生成 6 位數(shù)字手機(jī)驗(yàn)證碼

以下語句可以用于生成一個(gè)由 6 位數(shù)字字符組成的驗(yàn)證碼:

CALL dbms_random.seed(0);
SELECT lpad(trunc(dbms_random.value(0, 1000000)),6,'0') captcha FROM dual;
CAPTCHA|
-------|
063365 |

lpad 函數(shù)可以確保數(shù)據(jù)不夠 6 位時(shí)在前面補(bǔ)足 0。

生成標(biāo)準(zhǔn)正態(tài)分布隨機(jī)數(shù)

DBMS_RANDOM.VALUE 函數(shù)生成的是一個(gè)均勻分布的隨機(jī)數(shù),而 DBMS_RANDOM.NORMAL 函數(shù)可以用于返回一個(gè)遵循標(biāo)準(zhǔn)正態(tài)分布(期望值為 0,標(biāo)準(zhǔn)差為 1)的隨機(jī)數(shù)。例如:

CALL dbms_random.seed(1);
SELECT dbms_random.normal FROM dual;
NORMAL     |
------------------------------------------|
0.4116858715102697161411270380245532257962|

生成隨機(jī)字符串

生成固定長度的隨機(jī)字符串

除了隨機(jī)數(shù)字之外,DBMS_RANDOM.STRING 函數(shù)可以用于產(chǎn)生一個(gè)隨機(jī)字符串:

DBMS_RANDOM.STRING
 opt IN CHAR,
 len IN NUMBER)
 RETURN VARCHAR2;

其中,參數(shù) opt 可以指定返回字符串的類型:

  • ‘u', ‘U',返回由大寫字母組成的字符串;
  • ‘l', ‘L',返回由小寫字母組成的字符串;
  • ‘a(chǎn)', ‘A',返回由大小寫混合字母組成的字符串;
  • ‘x', ‘X',返回由大寫字母和數(shù)字組成的字符串;
  • ‘p', ‘P',返回由任意可打印字符組成的字符串;
  • 其他參數(shù),返回由大寫字母組成的字符串。

參數(shù) len 表示返回字符串的長度。例如:

CALL dbms_random.seed(1);
SELECT dbms_random.string('p', 10) FROM dual;
DBMS_RANDOM.STRING('P',10)|
--------------------------|
gqB!U5t^a6  |

以上示例返回了一個(gè)長度為 10,由任意可打印字符組成的隨機(jī)字符串。

生成可變長度的隨機(jī)字符串

那么,怎么返回一個(gè)長度可變的隨機(jī)字符串呢?很簡單,將 DBMS_RANDOM.STRING 和 DBMS_RANDOM.VALUE 函數(shù)結(jié)合一下就可以了。例如:

CALL dbms_random.seed(1);
SELECT dbms_random.string('p', trunc(dbms_random.value(10,21))) AS random_string FROM dual;
RANDOM_STRING |
------------------|
qB!U5t^a6ZFUoIw|O^|

以上示例返回了一個(gè)隨機(jī)長度大于等于 10 且小于等于 20,由任意可打印字符組成的隨機(jī)字符串。

生成隨機(jī)日期

將指定日期或者時(shí)間戳增加一個(gè)隨機(jī)的數(shù)字,就可以得到隨機(jī)的日期和時(shí)間戳。例如:

CALL dbms_random.seed(1);
SELECT trunc(date '2020-01-01'+dbms_random.value(0,31)) rand_date,
 timestamp '2020-01-01 00:00:00'+dbms_random.value(0,31) rand_ts
FROM dual;
RAND_DATE  |RAND_TS  |
-------------------|-------------------|
2020-01-24 00:00:00|2020-01-27 16:07:37|

以上示例返回了 2020 年 1 月中的某個(gè)隨機(jī)日期和時(shí)間戳。

獲取隨機(jī)記錄

對(duì)于查詢語句,如果返回多行數(shù)據(jù),DBMS_RANDOM 程序包中的函數(shù)會(huì)返回不同的隨機(jī)數(shù)據(jù)。例如:

CALL dbms_random.seed(1);
SELECT dbms_random.value FROM employee;
VALUE     |
----------------------------------------|
0.75096444209816859425547820733985992585|
0.86038577935739084599473227591041135085|
0.36531856164744564910966598428812048036|
...

利用這個(gè)特性,我們可以從表中返回隨機(jī)的數(shù)據(jù)行。例如:

CALL dbms_random.seed(1);
SELECT emp_id, emp_name
FROM employee 
ORDER BY dbms_random.value
FETCH FIRST 5 ROWS ONLY;
EMP_ID|EMP_NAME |
------|---------|
 10|廖化 |
 24|簡雍 |
 20|蔣琬 |
 6|魏延 |
 4|諸葛亮 |

以上示例從 employee 表中返回了隨機(jī)的 5 行數(shù)據(jù)。

另外,Oracle 還提供了一個(gè) SAMPLE 子句,可以用于返回按照百分比指定的隨機(jī)抽樣數(shù)據(jù)。例如:

SELECT emp_id, emp_name
FROM employee sample (10) seed(1);
EMP_ID|EMP_NAME |
------|---------|
 4|諸葛亮 |
 5|黃忠 |
 16|周倉 |

以上示例返回了 employee 表中抽樣 10% 的隨機(jī)數(shù)據(jù)(employee 表共計(jì)有 25 條數(shù)據(jù)),seed 用于設(shè)置隨機(jī)抽樣的種子。

⚠️SAMPLE 子句是一種基于數(shù)據(jù)庫統(tǒng)計(jì)信息的預(yù)估,如果統(tǒng)計(jì)數(shù)據(jù)不準(zhǔn)確,查詢結(jié)果可能會(huì)存在較大偏差。

生成 UUID

UUID(Universal Unique Identifier)或者 GUID(Globally Unique Identifier)是一個(gè) 128 比特的數(shù)字,可以用于唯一標(biāo)識(shí)每個(gè)網(wǎng)絡(luò)對(duì)象或資源。由于它的生成機(jī)制,一個(gè) UUID 可以保證幾乎不會(huì)與其他 UUID 重復(fù),因此常常用于生成數(shù)據(jù)庫中的主鍵值。

Oracle 提供了一個(gè)系統(tǒng)函數(shù) SYS_GUID(),可以用于生成 GUID。例如:

SELECT rawtohex(sys_guid()) FROM dual;
RAWTOHEX(SYS_GUID())  |
--------------------------------|
ACCDB38D17FA1103E05579D90B3808D7|

如果想要生成帶中劃線(-)的 UUID,可以創(chuàng)建以下自定義函數(shù):

CREATE OR REPLACE FUNCTION new_guid
RETURN varchar2
AS
 lv_guid varchar(32);
BEGIN
 lv_guid:=rawtohex(sys_guid());
 RETURN substr(lv_guid,1,8) || '-'
 ||substr(lv_guid,9,4) || '-'
 ||substr(lv_guid,13,4)|| '-'
 ||substr(lv_guid,17,4)|| '-'
 ||substr(lv_guid,21,12);
END;
/

new_guid 函數(shù)只是基于系統(tǒng)函數(shù) sys_guid 返回的結(jié)果增加了 4 個(gè)中劃線。試用一下:

SELECT new_guid() FROM dual;
NEW_GUID()    |
------------------------------------|
ACCDB38D-17FD-1103-E055-79D90B3808D7|

總結(jié)

本文總結(jié)了在 Oracle 數(shù)據(jù)庫中使用系統(tǒng)程序包 DBMS_RANDOM 生成隨機(jī)數(shù)據(jù)的方法,包括隨機(jī)數(shù)字、驗(yàn)證碼、隨機(jī)字符串以及隨機(jī)日期和時(shí)間等,同時(shí)還介紹了如何從表中返回隨機(jī)記錄,以及如何生成 UUID。

到此這篇關(guān)于Oracle生成隨機(jī)數(shù)字、字符串、日期、驗(yàn)證碼及 UUID的方法的文章就介紹到這了,更多相關(guān)Oracle生成隨機(jī)數(shù)UUID內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • mysql生成指定位數(shù)的隨機(jī)數(shù)及批量生成隨機(jī)數(shù)的方法
  • MySQL的指定范圍隨機(jī)數(shù)函數(shù)rand()的使用技巧
  • mysql 某字段插入隨機(jī)數(shù)(插入隨機(jī)數(shù)到MySQL數(shù)據(jù)庫)
  • MySQL查詢隨機(jī)數(shù)據(jù)的4種方法和性能對(duì)比
  • MySQL 生成隨機(jī)數(shù)字、字符串、日期、驗(yàn)證碼及 UUID的方法

標(biāo)簽:南陽 泰安 焦作 梧州 銀川 酒泉 河源 柳州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle生成隨機(jī)數(shù)字、字符串、日期、驗(yàn)證碼及 UUID的方法》,本文關(guān)鍵詞  Oracle,生成,隨機(jī),數(shù)字,字符串,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Oracle生成隨機(jī)數(shù)字、字符串、日期、驗(yàn)證碼及 UUID的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于Oracle生成隨機(jī)數(shù)字、字符串、日期、驗(yàn)證碼及 UUID的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产裸体歌舞团一区二区| 久久免费午夜影院| 亚洲欧美怡红院| 91在线看国产| 久久综合视频网| 色先锋资源久久综合| 天堂精品中文字幕在线| 久久久久久久久99精品| 日本久久精品电影| 国产一区二区主播在线| 亚洲综合在线第一页| 日韩欧美在线1卡| 91亚洲男人天堂| 麻豆精品一二三| 亚洲丝袜美腿综合| 26uuu成人网一区二区三区| 97精品国产97久久久久久久久久久久| 免费xxxx性欧美18vr| 亚洲乱码国产乱码精品精小说| 91精品久久久久久久91蜜桃| 成人污视频在线观看| 美女精品自拍一二三四| 亚洲愉拍自拍另类高清精品| 国产农村妇女毛片精品久久麻豆| 欧美精品在线观看一区二区| 一本大道综合伊人精品热热| 国产精品一区二区在线观看网站| 亚洲国产精品久久人人爱 | 日韩国产一区二| 综合精品久久久| 久久久久88色偷偷免费| 亚洲精品一线二线三线| 欧美日韩极品在线观看一区| 91精品1区2区| 99精品视频在线观看| 成人激情文学综合网| 国产精品一区一区| 国产经典欧美精品| 国产毛片精品一区| 一区二区三区在线免费播放| 亚洲人吸女人奶水| 日韩理论电影院| 中文字幕日韩av资源站| 欧美亚洲国产一卡| 不卡一区二区三区四区| 久久蜜臀精品av| 国产精品久久久久影院老司| 亚洲蜜臀av乱码久久精品| 亚洲国产毛片aaaaa无费看 | 亚洲自拍另类综合| 国产一区二区三区免费| 制服丝袜亚洲精品中文字幕| 亚洲精品伦理在线| 波多野结衣精品在线| 久久久99久久精品欧美| 久久超碰97中文字幕| 日韩视频一区二区三区在线播放| 亚洲黄色尤物视频| 色综合天天综合网国产成人综合天| 国产精品亲子伦对白| 成人av午夜影院| 中文字幕久久午夜不卡| 亚洲三级视频在线观看| 国产91露脸合集magnet| 亚洲国产高清不卡| 成人av集中营| 亚洲综合久久久久| 日韩久久久精品| 久久精品99久久久| 欧美激情资源网| 欧美在线|欧美| 亚洲小说欧美激情另类| 色8久久人人97超碰香蕉987| 国产精品久久久久久久久图文区| 国产一区二区精品久久99| 久久精品在这里| 欧美视频你懂的| 91成人免费网站| 99re成人在线| 国产在线播精品第三| 亚洲午夜视频在线观看| gogo大胆日本视频一区| 国产精品日日摸夜夜摸av| 欧美一级二级三级蜜桃| 91福利资源站| 色老头久久综合| 粉嫩高潮美女一区二区三区| 美腿丝袜亚洲综合| 欧美视频精品在线| 久久99九九99精品| 麻豆成人免费电影| 美国三级日本三级久久99| 亚洲国产精品久久人人爱蜜臀| 亚洲免费观看高清完整| 亚洲国产精品一区二区www在线 | 日韩美一区二区三区| 911精品产国品一二三产区| 欧美日韩一区二区三区高清| 欧美四级电影在线观看| 国产精品911| 奇米精品一区二区三区在线观看| 亚洲国产精品一区二区久久恐怖片 | 国产精品午夜春色av| 日韩av一级电影| 成人网在线免费视频| 99久久国产综合色|国产精品| 欧美日韩综合色| 国产精品另类一区| 另类小说色综合网站| 99久久精品国产一区二区三区| 日韩欧美国产一二三区| 一区二区不卡在线播放| 成人免费视频一区| 国产三级精品在线| 国产综合成人久久大片91| 日韩亚洲欧美一区| 日本sm残虐另类| 欧美一区二区黄| 免费观看一级特黄欧美大片| 欧美亚洲尤物久久| 午夜久久久久久| 精品欧美一区二区在线观看| 美女视频一区二区| 欧美韩国日本不卡| 波多野结衣亚洲| 五月天激情综合网| 日本一区二区三区四区| 成人av网站免费观看| 亚洲综合免费观看高清完整版在线 | 亚洲欧洲精品天堂一级 | 91视频.com| 日本三级韩国三级欧美三级| 色噜噜偷拍精品综合在线| 《视频一区视频二区| 色哟哟一区二区三区| 久久久久久久久免费| 极品美女销魂一区二区三区 | 久久国产日韩欧美精品| 欧美日韩国产综合视频在线观看 | 精品日产卡一卡二卡麻豆| 老司机午夜精品| 在线看国产日韩| 日韩精品五月天| 亚洲人快播电影网| 色婷婷精品大在线视频| 亚洲成人久久影院| 欧美刺激午夜性久久久久久久| 精品一区二区在线视频| 日本一区二区综合亚洲| 91高清在线观看| 狂野欧美性猛交blacked| 欧美国产激情一区二区三区蜜月| 色综合色综合色综合| 美女一区二区三区在线观看| 久久九九国产精品| 亚洲天堂av老司机| 欧美国产一区二区在线观看 | 国产精品白丝在线| 久久久国产精品麻豆| 欧美猛男超大videosgay| 国产成人免费在线视频| 亚洲bdsm女犯bdsm网站| 捆绑调教一区二区三区| 亚洲成人一区在线| 国产精品素人一区二区| 欧美一二三四在线| 日韩欧美精品在线| 欧美日韩视频在线一区二区| 97精品国产97久久久久久久久久久久| 国产精品污www在线观看| 亚洲欧美在线视频观看| 国产精品无码永久免费888| 精品区一区二区| 日韩一区二区三区四区 | 成人一区二区三区视频 | 亚洲欧美视频在线观看| 欧美韩国日本不卡| 国产精品乱码一区二区三区软件 | 国产资源在线一区| 韩国在线一区二区| 欧美视频一区在线| 色94色欧美sute亚洲13| 欧美日韩第一区日日骚| 777奇米成人网| 亚洲精品写真福利| 美女脱光内衣内裤视频久久影院| 欧美a一区二区| 日韩成人av影视| 色天使色偷偷av一区二区| 欧美日韩日日骚| 久久久久久久久97黄色工厂| 日韩成人精品视频| 风间由美一区二区av101| 91网站在线播放| 日本一区二区三区四区在线视频| 久久99深爱久久99精品| 99麻豆久久久国产精品免费优播| 欧美日韩色一区| 日韩一区中文字幕| 亚洲成人免费影院|