成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

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

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

熱門標簽:百應電話機器人優(yōu)勢 怎樣在地圖標注銷售區(qū)域 南昌三維地圖標注 武漢網絡外呼系統(tǒng)服務商 啥是企業(yè)400電話辦理 外呼系統(tǒng)打電話上限是多少 地圖標注費用是多少 曲靖移動外呼系統(tǒng)公司 電話外呼系統(tǒng)改號

上一篇介紹了如何在 Oracle 生成隨機數字、字符串、日期、驗證碼以及 UUID,今天我們繼續(xù)討論在 MySQL 中生成各種隨機數據的方法。

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

生成隨機數字

生成 0 到 1 之間的隨機數

MySQL 中的 RAND 函數可以用于生成一個大于等于 0 小于 1 的隨機數字。例如:

SELECT rand();
rand()   |
------------------|
0.7245639057127423|

SELECT rand();
rand()    |
-------------------|
0.01697599982561171|

該函數返回的數據類型為 double,包含 16 位小數;每次調用都會返回不同的數據。

如果想要重現某些場景,需要確保每次運行時生成相同的隨機數。這種情況下可以為 RAND 函數傳遞一個輸入參數,設置一個隨機數種子。例如:

SELECT rand(1);
rand(1)   |
-------------------|
0.40540353712197724|

SELECT rand(1);
rand(1)   |
-------------------|
0.40540353712197724|

從結果可以看出,相同的種子返回了相同的隨機數。

生成指定范圍內的隨機數

基于 RAND 函數和數學運算,可以返回任意兩個數字之間的隨機數:

low + RAND() * (high − low)

以上表達式將會返回一個大于等于 low,小于 high 的隨機數。例如:

SELECT 10 + rand(1) * 10;
10 + rand(1) * 10 |
------------------|
14.054035371219772|

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

如果想要生成某個范圍內的隨機整數,可以加上 FLOOR 函數。例如:

SELECT floor(10 + rand(1) * (10)) AS rd;
rd |
----|
14.0|

該語句返回了一個大于等于 10,小于等于 19(不是 20)的隨機整數。

生成 6 位數字手機驗證碼

我們已經獲得了指定范圍內的隨機整數,加上 LPAD 函數就可以生成由 6 位數字字符組成的手機驗證碼。例如:

SELECT lpad(floor(rand(999) * 1000000), 6, '0') AS captcha;
captcha|
-------|
088146 |

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

生成遵循正態(tài)分布的隨機數

RAND 函數生成的是一個遵循均勻分布的隨機數,MySQL 沒有提供生成遵循正態(tài)分布(normal distribution)的隨機數。我們可以創(chuàng)建一個存儲函數來模擬正態(tài)分布的隨機數:

delimiter //
create function normal_distrib(mean double, stdev double) 
returns double no sql
begin
set @x = rand(), @y = rand();
set @nd = (sqrt(-2 * log(@x)) * cos(2 * pi() * @y)) * stdev + mean;
return @nd;
end
//
delimiter ;

以上函數利用 Box-Muller 變換算法通過兩個平均分布的隨機數生成正態(tài)分布的隨機數。

以下語句通過 normal_distrib 函數生成了一個期望值為 0,標準差為 1 的正態(tài)分布隨機數:

SELECT normal_distrib(0,1);
normal_distrib(0,1)|
-------------------|
 1.4930564399841173|

以下語句可以用于驗證 normal_distrib 函數是否遵循正態(tài)分布:

with recursive temp(val) as (
 select normal_distrib(0,1)
 union all
 select normal_distrib(0,1)
 from temp
 limit 1000000
)
select /*+ set_var(cte_max_recursion_depth = 1m) */avg(val),std(val)
from temp;
avg(val)    |std(val)   |
---------------------|------------------|
-0.002340136192616743|0.9994844557755181|

通過運行 1000000 次,計算這些數據的平均值和標準差,返回結果非常接近 0 和 1。

生成隨機字符串

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

除了隨機數字之外,有時候我們也需要生成一些隨機的字符串。MySQL 沒有提供專門生成隨機字符串的函數,但是可以通過其他函數進行模擬。例如:

SELECT char(floor(rand() * 26)+65) as rand_char;
rand_char|
---------|
T  |

以上查詢返回了一個隨機的大寫字母,char 函數用于將 ASCII 碼轉換為對應的字符。我們可以基于該查詢進一步創(chuàng)建一個存儲函數:

delimiter //
create function rand_string(len integer) 
returns text no sql
begin
 declare counter int default 1;
 declare str text default '';
 
 if len  1 then
 return null;
 end if;
 
 while counter = len do
 set str = concat(str, char(floor(rand() * 94) + 33));
 set counter = counter + 1;
 end while;
 
 return str;
end
//
delimiter ;

rand_string 函數可以返回由任意可打印字符(ASCII 碼從 33 到 126)組成的隨機字符串。例如:

rand_string(8)|
--------------|
7j5dz[58  |

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

另外,MySQL 中的 elt 函數也可以用于返回指定位置中的元素。例如:

SELECT elt(1 + floor(rand() * 36),
   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 
   'A','B','C','D','E','F','G',
   'H','I','J','K','L','M','N',
   'O','P','Q','R','S','T',
   'U','V','W','X','Y','Z') as val;
val|
---|
B |

以上語句返回了一個隨機的數字或者大寫字母,將其替換到 rand_string 函數可以返回一個由數字和大寫字母組成的隨機字符串。

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

那么,怎么返回一個長度可變的隨機字符串呢?很簡單,為 rand_string 函數指定一個隨機的長度參數即可。例如:

SELECT rand_string(floor(10 + rand() * 11));
rand_string(floor(10 + rand() * 11))|
------------------------------------|
4U13MjO+($}k"cO@5%[     |

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

生成隨機日期和時間

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

SELECT date_add('2020-01-01', interval rand() * 31 day) rand_date;
rand_date |
----------|
2020-01-19|

以上示例返回了 2020 年 1 月中的某個隨機日期。以下語句則返回了一天中的某個隨機時間:

SELECT sec_to_time(rand() * 3600) rand_time;
rand_time   |
------------------|
00:05:29.546878000|

其中,sec_to_time 函數用于將秒數轉換為時間數據。

獲取表中的隨機記錄

對于返回多行數據的查詢語句,RAND 函數每次都會返回不同的隨機數據。例如:

SELECT rand(1) FROM employee;
rand(1)    |
--------------------|
 0.40540353712197724|
 0.8716141803857071|
 0.1418603212962489|
...

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

SELECT emp_id,emp_name
FROM employee
ORDER BY rand(1)
LIMIT 5;
emp_id|emp_name |
------|----------|
  6|魏延  |
 14|張苞  |
 16|周倉  |
 15|趙統(tǒng)  |
  1|劉備  |

以上示例從 employee 表中返回了 5 行隨機記錄。該方法需要為表中的每行數據都生成一個隨機數,然后進行排序;所以會隨著表中的數據量增加而逐漸變慢。

如果表中存在自增主鍵,也可以基于主鍵生成一個隨機數據。例如:

SELECT round(rand() * (SELECT max(emp_id) FROM employee)) AS id;
id |
----|
10.0|

然后基于這個隨機數返回一條隨機的記錄:

SELECT e.emp_id, e.emp_name
FROM employee e
INNER JOIN (SELECT round(rand() * (SELECT max(emp_id) FROM employee)) AS id
  ) AS t
WHERE e.emp_id >= t.id
LIMIT 1;
emp_id|emp_name|
------|--------|
  9|趙云  |

這種方法一次只能返回一條隨機記錄,而且只有當自增字段的值沒有間隙時才會返回均勻分布的隨機記錄。

生成 UUID

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

MySQL 提供了一個系統(tǒng)函數 UUID,可以用于生成 UUID。例如:

SELECT uuid();
uuid()        |
------------------------------------|
35f67fde-e0e9-11ea-9d25-0800272142b1|

如果想要生成沒有中劃線(-)的 UUID,可以使用 REPLACE 函數:

SELECT replace(uuid(),'-','');
replace(uuid(),'-','')   |
--------------------------------|
8505290be0ea11ea9d250800272142b1|

除此之外,MySQL 還提供了一個UUID_SHORT 函數,它可以返回一個 64 比特的無符號整數。例如:

SELECT uuid_short();
uuid_short()  |
-----------------|
98862025337208832|

該函數返回的是一個“短的”唯一標識符,只有滿足以下條件時才具有唯一性:

  • 當前服務器的 server_id 位于 0 到 255 之間,并且在復制結構中具有唯一性;
  • 重啟 mysqld 前后沒有將服務器主機的系統(tǒng)時間往回調整;
  • 每秒鐘的平均調用次數少于 1600 萬次。

總結

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

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

您可能感興趣的文章:
  • MySQL中日期型單行函數代碼詳解
  • Mysql 日期格式化及復雜日期區(qū)間查詢
  • MySQL數字類型自增的坑
  • MySQL關于字符串中數字排序的問題分析
  • MySQL實例精講單行函數以及字符數學日期流程控制

標簽:隨州 資陽 黑河 吉林 荊州 錦州 甘南 滄州

巨人網絡通訊聲明:本文標題《MySQL 生成隨機數字、字符串、日期、驗證碼及 UUID的方法》,本文關鍵詞  MySQL,生成,隨機,數字,字符串,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL 生成隨機數字、字符串、日期、驗證碼及 UUID的方法》相關的同類信息!
  • 本頁收集關于MySQL 生成隨機數字、字符串、日期、驗證碼及 UUID的方法的相關信息資訊供網民參考!
  • 推薦文章
    国产精品久久久久久久妇| 成人性爱视频在线观看| 国产一二三四区| 99自拍偷拍视频| 成人av手机在线| 欧美日韩精品在线| 成人在线免费观看视频| 99热这里只有精品4| 国产日产欧美一区二区| 国产女主播一区二区三区| 欧美亚洲色图校园春色| h片在线观看视频免费免费| 国产精品一区二区电影| 亚洲综合激情另类小说区| 国产自产视频一区二区三区| 色一区在线观看| 91成品人影院| 九九九九精品| 亚洲女人天堂av| 2021国产精品久久精品| 91av在线不卡| 最新中文字幕一区二区三区| 成人网18免费看| 寂寞少妇一区二区三区| 九九热播视频在线精品6| 亚洲亚洲人成综合网络| 中文字幕第二区| 免费不卡av| 中文字幕亚洲免费| 国产传媒在线视频| 伊人久久久久久久久久久| 国产麻豆一精品一av一免费| 国产小视频在线免费观看| 91精选在线| 很污的网站在线观看| 国内老司机av在线| 丁香婷婷综合色啪| 全彩无遮挡全彩口工漫画h#| 亚洲精品福利免费在线观看| 91美女片黄在线观看91美女| 亚洲欧美久久婷婷爱综合一区天堂| 欧美国产另类| 国产精品人人爽| 久久久久久久久久久久久久久久久久久| 国产精品久久久久9999吃药| 国产精品91xxx| 午夜一级黄色片| 老子影院午夜伦不卡大全| 精品一区二区三区中文字幕老牛| 亚洲v欧美v另类v综合v日韩v| 国产亚洲aⅴaaaaaa毛片| canopen超线视频网线的应用| 在线不卡a资源高清| 欧美日韩国产精品成人| 全部毛片永久免费看| 在线观看欧美成人| 亚洲 国产 欧美一区| 国产精品第157页| 国产一区二区三区影院| 国产成年人视频网站| 五月天婷亚洲天综合网精品偷| 色妞久久福利网| 欧美日韩免费视频| 欧美日韩国产丝袜另类| 伊人久久大香线蕉综合影院首页| bestiality新另类大全| 欧美超级免费视 在线| 亚洲av毛片基地| 日韩成人在线视频观看| 久久综合中文字幕| 国产精品无码久久久久| 三上悠亚久久精品| 欧美激情国内自拍| 国产免费成人| 波多野结衣有码| 亚洲国产精品久久精品怡红院| 亚洲av无码片一区二区三区| 久久久久久久久亚洲| 免费一级欧美片在线播放| 亚洲一一在线| 8x国产一区二区三区精品推荐| 精品成人一区二区三区免费视频| 午夜精品视频网站| 日本少妇一区二区三区| 成年女人的天堂在线| 一区二区影视| 人妻少妇一区二区三区| 中文字幕第一区二区| 午夜亚洲福利在线老司机| 中国麻豆视频| 男人天堂网在线视频| 秋霞午夜一区二区| 欧美嫩在线观看| vam成人资源在线观看| 亚洲专区欧美专区| 在线精品播放av| 九色蝌蚪在线视频| 超薄丝袜一区二区| 日本网站在线播放| 国产乱淫av片杨贵妃| 欧美专区福利免费| 午夜剧场免费在线观看| 欧美一区二区三区精品电影| 九九热国产在线| av在线免费播放| 国产精品21p| 蜜桃视频在线观看播放| 91视频青青草| 久久一区二区三区欧美亚洲| 日本精品999| 欧美日韩裸体免费视频| wwwww在线观看| 久久久久电影| 在线国产欧美| 国产午夜精品一区理论片飘花| 色婷婷一区二区三区| 久久成人精品视频| 欧美性感美女h网站在线观看免费| 国产亚洲成av人片在线观黄桃| 91精品国产一区二区人妖| 亚洲盗摄视频| 天天堂资源网在线观看免费视频| 中文在线资源在线| 91热这里只有精品| 农村妇女精品一区二区| 亚洲专区在线播放| 久久精品国产亚洲AV成人婷婷| 欧美视频免费| 都市激情久久综合| 久久久精品久久久| 欧美高清视频一区二区三区| 尤物视频在线观看| 99t1这里只有精品| 国产精品日本一区二区不卡视频| 在线日本中文字幕| 亚洲成人精品女人久久久| 精品无码av无码免费专区| 国产亚洲美女久久| 高清视频国产| 亚洲欧洲av一区二区三区久久| 日本sm残虐另类| 中文网丁香综合网| 国产精品一区二区小说| 丁香婷婷自拍| 亚洲人123区| 亚洲人成在线观| 毛片视频免费观看| 亚亚洲欧洲精品| 1024手机看片国产| 婷婷综合国产| 亚洲欧美另类小说| 久久影视一区二区| 欧美成人一区在线观看| 日本精品视频在线播放| 日韩国产欧美三级| 免费污视频在线一区| 亚洲免费影视| 在线日韩国产精品| 精品在线网站观看| 一个人免费观看日本www视频| 国产一区二区三区朝在线观看| 亚洲人成亚洲人成在线观看| 欧美性69xxxx肥| 91成人看片| 2020国产成人综合网| 欧美一区二区三| 日韩在线视频播放| 国产精品久久久久久久无码| 国内精品第一页| 色乱码一区二区三区熟女| 韩国成人在线| 尤物在线观看视频| jizzjizz在线观看| 欧美精品在线视频观看| 欧美黑人巨大videos精品| www久久日com| 欧美激情一级片一区二区| 日韩久久在线| 成人天堂噜噜噜| 性生大片免费观看性| 国产成人av一区二区三区在线观看| 欧美一区二区三区在线视频| 亚洲摸摸操操av| 国产又黄又爽又无遮挡| 日日草天天干| 伊人久久婷婷| 一级片在线视频| 国产特级黄色录像| 成人性生交大片免费看视频r| 四虎影院一区二区三区| 欧美日韩激情视频一区二区三区| 亚洲国产欧美不卡在线观看| 成人免费精品视频| 思思久久99热只有频精品66| 一区二区三区四区蜜桃| 国产福利三区| 国产午夜精品久久久久久免费视| 西西午夜视频| 成人综合电影| 日本少妇xxxx动漫| 亚洲色图欧洲色图婷婷| 日韩福利在线视频| 欧美性猛交xxxx乱| 91精品国产调教在线观看| 精品视频在线观看网站| 91在线精品观看| 国产又大又黄又爽| 嫩草影院在线观看网站成人| 国产精品国产精品国产专区不卡| 免费观看一级视频| 欧美电影免费观看网站| 成人性色生活片| 日韩激情av在线| 欧美精品1区| 久久国产综合| 亚洲国产精品悠悠久久琪琪| 久久久久成人片免费观看蜜芽| 开心九九激情九九欧美日韩精美视频电影| 99国产盗摄| 欧美电影《睫毛膏》| 最新亚洲国产| 国产免费999| 国产精品高潮呻吟久久久久| 欧美日韩精品一区二区三区蜜桃| 快灬快灬一下爽蜜桃在线观看| 久久婷婷国产麻豆91天堂| 粉嫩高清一区二区三区精品视频| 亚洲区精品久久一区二区三区| 久久免费播放视频| 手机看片日韩av| 国产精品亚洲第一| 欧美吞精做爰啪啪高潮| a在线视频v视频| 欧美精品vⅰdeose4hd| 亚洲一区二区三区四区中文字幕| 性一交一乱一精一晶| 国产在线视频综合| 欧美激情一区二区| 久久黄色一级视频| 嫩草在线播放| 久久久久久久久久久免费| 国产一区二区三区亚洲综合| 好看的日韩精品视频在线| 懂色av.com| 成人在线高清视频| 亚洲日本久久久| 亚洲精品一区二区口爆| 久久精品国产99国产精品澳门| 国产精品久久久久77777丨| 成人免费毛片播放| 国产不卡精品一区二区三区| 久久久影院一区二区三区| 亚洲国产成人精品久久| 久久久久99精品成人| 国产精品久久久久久妇女| 国产毛片在线| 国产精品999在线观看| 日韩国产91| 欧美极品一区二区三区| 欧美巨乳在线| 欧美成人午夜做爰视频在线观看| 精品中文字幕一区二区三区| 成人在线高清免费| 男人天堂视频在线观看| 亚洲精品成人悠悠色影视| 美国十次了思思久久精品导航| 在线观看视频一区二区| 这里只有精品视频在线| 欧美亚州一区二区三区| 卡一卡二国产精品| 日韩黄色在线免费观看| 日韩精品国内| 中文在线免费视频| 亚洲国产精品久久91精品| 日本一区二区三区四区五区六区| 93在线视频精品免费观看| 超碰97久久国产精品牛牛| 男人天堂视频网| 欧美激情导航| 日韩福利视频在线| 日本a在线观看| 一区二区三区视频免费视频观看网站| 91精品国产91久久久| 欧美中文字幕一二三四区| 成人午夜免费av| 91高清视频免费观看| 国产二区一区| 日韩少妇裸体做爰视频| 污视频在线免费观看| 欧美极品xxx| 国产一区二区电影在线观看| 久久成人亚洲| 国产天堂在线观看| 九九这里只有精品视频| 亚洲小说春色综合另类网蜜桃| 日本欧美电影在线观看| 天堂网av手机版| 日韩精品福利视频| www.97超碰| 欧美人成在线观看ccc36| 国产成人夜色高潮福利影视| 中文字幕欧美日韩精品| 韩国成人av| 插插插亚洲综合网| 永久久久久久| 亚洲一区不卡在线| 国产成人一区二| 日韩电影二区| 国产亚洲亚洲国产一二区| 亚洲影院免费观看| 国产精品青草久久久久福利99| 日本vs亚洲vs韩国一区三区二区| 一区二区三区四区日本视频| 精品久久久精品| 在线精品日韩| 一本久久a久久精品vr综合| 午夜欧洲一区| 日日噜噜夜夜狠狠久久波多野| 九九热国产在线| 熟女人妻一区二区三区免费看| 欧美 亚洲 另类 激情 另类| 色偷偷亚洲男人天堂| 亚洲午夜激情av| 玉足女爽爽91| 欧美亚洲一区二区三区| 高清不卡日本v二区在线| 国产日韩av高清| 成人免费高清在线播放|