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

主頁 > 知識庫 > Oracle生成隨機數字、字符串、日期、驗證碼及 UUID的方法

Oracle生成隨機數字、字符串、日期、驗證碼及 UUID的方法

熱門標簽:網貸外呼系統合法嗎 安陽企業電銷機器人供應商 杭州網絡外呼系統運營商 手機地圖標注門店 電銷套路機器人 地圖標注效果的制作 鶴壁電話機器人價格 地圖標注坐標圖標 汽車4s店百度地圖標注店

在日常生活中,隨機數對于我們而言并不陌生,例如手機短信驗證碼就是一個隨機的數字字符串;對于統計分析、機器學習等領域而言,通常也需要生成大量的隨機數據用于測試、數據抽樣、算法驗證等。那么今天我們就來談談如何在 Oracle 數據庫中生成隨機數據。

📝計算機生成的都是偽隨機數,并不是真正的物理隨機數。

生成隨機數字

Oracle 提供了一個系統程序包 DBMS_RANDOM,可以用于生成隨機數據,例如隨機數字、隨機字符串等。

生成 0 到 1 之間的隨機數

DBMS_RANDOM.VALUE 函數可以用于生成一個大于等于 0 小于 1 的隨機數字。例如:

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

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

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

有時候,例如測試時,我們想要確保每次運行時生成相同的隨機數。這種情況下,我們可以使用存儲過程 DBMS_RANDOM.SEED 設置一個隨機數種子,然后再創建隨機數就可以返回固定的數值。例如:

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|

從結果可以看出,相同的種子返回了相同的隨機數。每次運行隨機數函數之前,都需要執行一次 DBMS_RANDOM.SEED 過程。

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

生成指定范圍內的隨機數

DBMS_RANDOM.VALUE 函數也可以接收兩個輸入參數:

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

這種形式的函數將會返回一個大于等于 low,小于 high 的隨機數。例如:

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

以上示例返回了一個大于等于 10,小于 20 的數字。

如果想要生成某個范圍內的隨機整數,可以利用 DBMS_RANDOM.VALUE 加上 TRUNC 函數實現。例如:

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

 

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

生成 6 位數字手機驗證碼

以下語句可以用于生成一個由 6 位數字字符組成的驗證碼:

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

lpad 函數可以確保數據不夠 6 位時在前面補足 0。

生成標準正態分布隨機數

DBMS_RANDOM.VALUE 函數生成的是一個均勻分布的隨機數,而 DBMS_RANDOM.NORMAL 函數可以用于返回一個遵循標準正態分布(期望值為 0,標準差為 1)的隨機數。例如:

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

生成隨機字符串

生成固定長度的隨機字符串

除了隨機數字之外,DBMS_RANDOM.STRING 函數可以用于產生一個隨機字符串:

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

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

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

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

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

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

生成可變長度的隨機字符串

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

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^|

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

生成隨機日期

將指定日期或者時間戳增加一個隨機的數字,就可以得到隨機的日期和時間戳。例如:

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 月中的某個隨機日期和時間戳。

獲取隨機記錄

對于查詢語句,如果返回多行數據,DBMS_RANDOM 程序包中的函數會返回不同的隨機數據。例如:

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

利用這個特性,我們可以從表中返回隨機的數據行。例如:

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 表中返回了隨機的 5 行數據。

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

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

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

⚠️SAMPLE 子句是一種基于數據庫統計信息的預估,如果統計數據不準確,查詢結果可能會存在較大偏差。

生成 UUID

UUID(Universal Unique Identifier)或者 GUID(Globally Unique Identifier)是一個 128 比特的數字,可以用于唯一標識每個網絡對象或資源。由于它的生成機制,一個 UUID 可以保證幾乎不會與其他 UUID 重復,因此常常用于生成數據庫中的主鍵值。

Oracle 提供了一個系統函數 SYS_GUID(),可以用于生成 GUID。例如:

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

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

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 函數只是基于系統函數 sys_guid 返回的結果增加了 4 個中劃線。試用一下:

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

總結

本文總結了在 Oracle 數據庫中使用系統程序包 DBMS_RANDOM 生成隨機數據的方法,包括隨機數字、驗證碼、隨機字符串以及隨機日期和時間等,同時還介紹了如何從表中返回隨機記錄,以及如何生成 UUID。

到此這篇關于Oracle生成隨機數字、字符串、日期、驗證碼及 UUID的方法的文章就介紹到這了,更多相關Oracle生成隨機數UUID內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

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

標簽:南陽 泰安 焦作 梧州 銀川 酒泉 河源 柳州

巨人網絡通訊聲明:本文標題《Oracle生成隨機數字、字符串、日期、驗證碼及 UUID的方法》,本文關鍵詞  Oracle,生成,隨機,數字,字符串,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle生成隨機數字、字符串、日期、驗證碼及 UUID的方法》相關的同類信息!
  • 本頁收集關于Oracle生成隨機數字、字符串、日期、驗證碼及 UUID的方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩一级完整毛片| 日韩欧美一区二区在线视频| 毛片一区二区三区| 亚洲人午夜精品天堂一二香蕉| 日韩女优电影在线观看| 91在线观看成人| 国产成人在线免费观看| 免费人成网站在线观看欧美高清| 亚洲精品乱码久久久久久| 国产蜜臀97一区二区三区 | 欧美大片日本大片免费观看| 欧美网站大全在线观看| 99国产精品久| www.欧美日韩| 成人视屏免费看| 国产毛片精品视频| 久久99国产精品麻豆| 午夜精品久久久久久久久久 | 久久精品人人做人人综合| 91精品国产入口| 欧美日韩精品福利| 欧美性生交片4| 91福利视频网站| 日本乱人伦一区| 色婷婷激情综合| 色婷婷精品久久二区二区蜜臂av | 亚洲人成在线观看一区二区| 国产精品午夜在线观看| 亚洲国产成人私人影院tom | 日日夜夜精品视频天天综合网| 一区二区三区不卡视频在线观看| 亚洲免费在线播放| 亚洲免费看黄网站| 亚洲影院久久精品| 五月婷婷久久丁香| 免费欧美在线视频| 国内成+人亚洲+欧美+综合在线| 激情文学综合网| 国产成人午夜电影网| 成人午夜免费视频| 91免费国产在线观看| 欧美午夜精品一区二区蜜桃| 欧美在线观看视频在线| 欧美精品18+| 日韩三级.com| 久久精品一二三| 国产精品色婷婷| 亚洲欧美视频在线观看视频| 亚洲成av人综合在线观看| 日韩黄色片在线观看| 极品少妇一区二区三区精品视频| 国产黄色91视频| 91免费视频观看| 欧美日精品一区视频| 欧美剧情电影在线观看完整版免费励志电影 | 91九色最新地址| 91精品国产91热久久久做人人 | 欧美日韩在线播放三区四区| 欧美精品123区| 久久综合狠狠综合久久激情| 国产精品毛片久久久久久久| 一区二区三区不卡在线观看| 免费精品视频在线| 国产成人免费视频一区| 91美女在线视频| 91精品国产综合久久久久| 久久久久88色偷偷免费| 亚洲欧美精品午睡沙发| 免费观看成人av| av电影在线观看一区| 欧美精品xxxxbbbb| 日本一区二区高清| 午夜视频一区在线观看| 久久av中文字幕片| 一本色道久久加勒比精品| 日韩视频在线一区二区| 亚洲人成影院在线观看| 久久99热99| 91久久线看在观草草青青| 精品国产成人在线影院 | 美日韩一级片在线观看| voyeur盗摄精品| 欧美一区二区三区免费视频| 中文字幕一区二区三| 日韩成人精品在线观看| 成人aaaa免费全部观看| 欧美一区二区视频在线观看2022| 国产精品美女视频| 蜜臀久久99精品久久久久久9| 99v久久综合狠狠综合久久| 26uuu精品一区二区三区四区在线| 亚洲精品国产视频| 大美女一区二区三区| 欧美一区二区女人| 亚洲国产另类av| 99久久精品免费| 国产欧美日韩综合| 国产在线精品一区二区不卡了 | 欧美一区二区三区啪啪| 亚洲美女免费在线| 成人黄色小视频| 国产日产欧美一区二区视频| 日本强好片久久久久久aaa| av在线播放成人| 欧美极品少妇xxxxⅹ高跟鞋| 久久精品国内一区二区三区| 欧美少妇xxx| 亚洲黄网站在线观看| av中文一区二区三区| 中文一区在线播放| 韩日欧美一区二区三区| 欧美一级高清大全免费观看| 婷婷成人综合网| 91在线一区二区三区| 国产精品高清亚洲| 国产成人av一区| 国产欧美一区二区三区网站 | 国产一区二区美女| 久久亚洲一区二区三区明星换脸| 秋霞成人午夜伦在线观看| 91精品国产综合久久久蜜臀图片| 亚洲国产另类精品专区| 欧美日韩国产欧美日美国产精品| 亚洲一区精品在线| 欧美日韩国产精品自在自线| 亚洲一区二区三区中文字幕 | 精品视频一区二区不卡| 亚洲综合偷拍欧美一区色| 色欧美88888久久久久久影院| 亚洲色图一区二区三区| 色综合一区二区三区| 一区二区在线免费观看| 欧美性生交片4| 三级久久三级久久| 欧美不卡在线视频| 国产成人综合网| 亚洲欧洲av色图| 欧美日韩色一区| 美女免费视频一区二区| 久久亚洲私人国产精品va媚药| 国产精品一级在线| 综合久久久久久| 欧美日韩成人在线| 另类中文字幕网| 国产午夜久久久久| 色综合天天综合网天天看片| 亚洲福中文字幕伊人影院| 91精品黄色片免费大全| 国产精品一区二区三区网站| 中文字幕一区二区三区乱码在线| 91黄色免费网站| 另类成人小视频在线| 国产清纯白嫩初高生在线观看91| 97久久精品人人做人人爽50路| 亚洲国产精品久久久久婷婷884 | 粉嫩aⅴ一区二区三区四区| 国产精品不卡在线观看| 欧美日韩精品三区| 国产麻豆精品视频| 亚洲色欲色欲www| 日韩欧美区一区二| 波多野结衣91| 免费xxxx性欧美18vr| 国产精品毛片高清在线完整版| 在线观看www91| 国产又黄又大久久| 一区二区三区欧美日| 欧美成人艳星乳罩| 91蜜桃婷婷狠狠久久综合9色| 日韩成人一级大片| 中文字幕日本不卡| 欧美一区二区成人6969| 91亚洲精品久久久蜜桃| 美腿丝袜一区二区三区| 亚洲精品国产第一综合99久久 | 美国欧美日韩国产在线播放| 中文字幕在线不卡| 91精品啪在线观看国产60岁| av成人老司机| 激情欧美一区二区三区在线观看| 一区二区三区日韩精品| 久久久99久久精品欧美| 91麻豆精品国产自产在线观看一区| 风流少妇一区二区| 久久精品国产久精国产| 亚洲一区电影777| 中文字幕的久久| 精品国产免费一区二区三区四区 | 亚洲精品一区二区三区蜜桃下载 | 久久久三级国产网站| 欧美亚洲愉拍一区二区| 成人免费毛片高清视频| 麻豆精品视频在线观看免费| 亚洲综合一二区| 亚洲视频精选在线| 欧美激情一区二区三区四区| 精品久久五月天| 91精品国产一区二区三区| 91久久奴性调教| 91免费在线看|