午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

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

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

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

上一篇介紹了如何在 Oracle 生成隨機數字、字符串、日期、驗證碼以及 UUID,今天我們繼續討論在 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。

生成遵循正態分布的隨機數

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

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 變換算法通過兩個平均分布的隨機數生成正態分布的隨機數。

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

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

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

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 碼轉換為對應的字符。我們可以基于該查詢進一步創建一個存儲函數:

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|趙統  |
  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 提供了一個系統函數 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 前后沒有將服務器主機的系統時間往回調整;
  • 每秒鐘的平均調用次數少于 1600 萬次。

總結

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

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

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

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

巨人網絡通訊聲明:本文標題《MySQL 生成隨機數字、字符串、日期、驗證碼及 UUID的方法》,本文關鍵詞  MySQL,生成,隨機,數字,字符串,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL 生成隨機數字、字符串、日期、驗證碼及 UUID的方法》相關的同類信息!
  • 本頁收集關于MySQL 生成隨機數字、字符串、日期、驗證碼及 UUID的方法的相關信息資訊供網民參考!
  • 推薦文章
    久久97超碰色| 国产婷婷97碰碰久久人人蜜臀 | 91九色偷拍| 精品亚洲porn| 免费不卡av网站| 欧美色中文字幕| 欧美精品一区二区蜜桃| 日本一卡二卡在线| 国产综合动作在线观看| 精品黑人一区二区三区久久| 国产又爽又黄网站亚洲视频123| 久久综合亚洲精品| 欧美一区二区.| 国产亚洲精品久久久优势| 欧美日韩视频在线观看一区二区三区| 亚洲综合丁香婷婷六月香| 91麻豆国产自产在线观看| 91丨porny丨在线中文 | 在线中文字幕日韩| 久久精品综合网| 日韩精品一区二区亚洲av观看| 日韩欧美激情一区二区| 欧美一区二区三区色| 免费久久99精品国产| 日韩成人一区二区三区在线观看| 国产美女av一区二区三区| 激情亚洲综合在线| 精品在线播放午夜| 一区二区三区91| 欧美久久久久免费| 自拍偷拍福利视频| 精人妻一区二区三区| 少妇高潮久久久久久潘金莲| 午夜久久电影网| 成人免费毛片a| 色噜噜噜噜噜噜| 免费看欧美一级片| 中文字幕av一区二区三区| 天天操天天插天天射| 永久久久久久久| 丁香婷婷激情网| 快播亚洲色图| 精品88久久久久88久久久| 精品一区二区三区在线视频| 免费在线观看av网址| 国产精华一区| 欧美日韩视频第一区| 久久99久久99精品免视看婷婷| 久久久久久一区二区| 91丨九色丨海角社区| 黑人狂躁日本娇小| 特级西西人体wwwww| 欧美日韩国产系列| 欧美偷拍一区二区| 国产精品美女久久久久久2018| 中文字幕在线播放一区| 欧美在线视频免费播放| 中文文精品字幕一区二区| 亚洲色图第四色| 亚洲 国产 日韩 综合一区| 91av在线视频观看| 成人av在线天堂| 亚洲免费av片| 一本色道亚洲精品aⅴ| 亚洲国产精品99久久久久久久久| 999热精品视频| 日韩免费高清在线| 国产资源中文字幕| 91精品国产乱码在线观看| 日本午夜精品一区二区三区电影 | 成人综合色站| 日本久久久久久久久久久| 精品国产免费久久| 一区二区三区日韩欧美精品 | 亚洲aa在线观看| 国内精品久久久久影院优| 日韩av网站免费在线| 欧美日韩久久婷婷| 国产精品久久久久久网站| 午夜精品福利视频网站| 久久综合久久99| 中文字幕精品一区二| 精品深夜av无码一区二区老年| 手机在线免费看毛片| 国产av一区二区三区精品| 中文字幕精品三区| 精品国产在天天线2019| 91国语精品自产拍在线观看性色| 91沈先生播放一区二区| 国产一区二区三区四区五区在线| 欧美激情xxxx性bbbb| 国内精品久久影院| 国产精品入口尤物| 欧美在线激情网| 欧美一级夜夜爽| 亚洲男人电影天堂| 在线看国产一区| 亚洲成人在线免费| 91久久国产综合久久| 欧美调教femdomvk| 91国内精品久久久| wwwav在线播放| 久久久久女人精品毛片九一| 麻豆国产尤物av尤物在线观看| 免费三片在线播放| 粉嫩精品久久99综合一区| 天堂社区在线视频| 亚洲美免无码中文字幕在线| 国产a级黄色大片| 96pao国产成视频永久免费| 欧美国产日韩中文字幕在线| 精品网站在线看| 国产伦精品一区二区三| 日韩精品无码一区二区三区| 亚洲日本精品| 在线播放国产精品二区一二区四区| 亚洲成色www8888| 俺去亚洲欧洲欧美日韩| 日本成人看片网址| 国产婷婷色一区二区在线观看| 国产亚洲成av人在线观看导航| 欧美军同video69gay| 欧美不卡一区二区三区| 国产视频精品va久久久久久| 亚洲人成电影在线| 97在线视频一区| 国产欧美日韩91| 国产精品美女www爽爽爽视频| 亚洲精品二三区| 国产精品三级av在线播放| 日本一区中文字幕| 奇米777欧美一区二区| 亚洲欧美日韩国产成人精品影院| 婷婷六月综合亚洲| 欧美三级三级三级| 在线丨暗呦小u女国产精品| 极品白嫩的小少妇| 91精品网站| 精品国产麻豆免费人成网站| 久久蜜臀中文字幕| 亚洲综合网av| 丰满岳乱妇一区二区| 久久这里精品国产99丫e6| 精品久久久91| 欧美日韩在线视频一区| 日韩精品视频网站| 国产一级片视频| 欧美少妇性生活视频| 91麻豆国产语对白在线观看| 亚洲乱码国产乱码精品精天堂| 亚洲国产精品高清| 丰满少妇高潮在线观看| 黄色片子免费看| 亚洲精品在线观看免费| 久久久噜噜噜久噜久久| 欧美电影影音先锋| 久久精品视频一区二区三区| 自拍偷拍第八页| 美国黄色一级视频| 亚洲一区精彩视频| **欧美日韩vr在线| 欧美videossexotv100| 1024亚洲合集| 免费观看30秒视频久久| 日韩三级免费看| 国产sm在线观看| 欧美日韩在线免费观看视频| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲精品成人久久久| 一区二区三区久久久| 久久精品国内一区二区三区| japanese国产在线观看| 手机在线看片日韩| av在线观看地址| 久久精品美女| 欧美中文字幕在线视频| 精品国产乱码久久久久久久久 | 日本亚洲色大成网站www久久| 香蕉视频网站入口| 欧美日韩在线一区二区三区| 97人人模人人爽人人喊中文字| 5566中文字幕一区二区电影| 国产精品毛片高清在线完整版| 亚洲精品中文字幕成人片| 久久久久久久久艹| 日韩精品视频一区二区| 久久久久久久中文| 狠狠色噜噜狠狠色综合久 | 国产精品国产三级国产aⅴ浪潮| 亚洲欧美日韩精品久久| 色一情一伦一子一伦一区| 2020国产精品自拍| 麻豆免费精品视频| 久久这里只有精品9| 亚洲做受高潮无遮挡| 污污网站免费看| 熟女视频一区二区三区| 高清免费日韩| 国产精品久久久久影院日本| 色偷偷9999www| 欧美一区二区三区四区久久| 午夜成人免费电影| 日本一二三不卡| 国产在线视频一区二区| 免费观看国产精品| 波多野结衣家庭主妇| 精品人妻伦九区久久aaa片| 97人妻天天摸天天爽天天| 久久久久国产精品熟女影院| 日本一区高清在线视频| 9a蜜桃久久久久久免费| 日本乱人伦a精品| 亚洲片在线观看| 欧美精品一区二区在线播放| 欧美视频中文字幕在线| 中文字幕在线不卡一区二区三区| 99久久综合精品| 精品无人区卡一卡二卡三乱码免费卡 | av中文字幕网址| 99在线免费视频观看| 欧美日韩一级在线| 欧美一区2区三区4区公司二百| 91久久夜色精品国产网站| 国产精品扒开腿爽爽爽视频| 欧美国产第二页| www.久久色.com| 中文字幕在线精品| 亚洲美女av电影| 日韩欧美一二区| 欧美性色黄大片| 欧美日韩国产中文字幕| 亚洲成人自拍网| 亚洲精品美腿丝袜| 国产精品久久一级| 国产精品看片你懂得| 国产拍欧美日韩视频二区| 不卡视频在线看| 成人美女在线观看| 国产98色在线|日韩| 久久99国产精品久久99果冻传媒| 免费高清在线视频一区·| 久久伊人亚洲| 天堂va蜜桃一区二区三区 | 给我看免费高清在线观看| 18禁一区二区三区| 日日噜噜夜夜狠狠| 亚洲色图偷拍视频| 一级黄色大片儿| 久久国产劲爆∧v内射| 免费观看黄网站| 国产精品久久久毛片| 国内自拍第二页| 国产乱淫av片| 国产伦精品一区二区三区妓女| 手机av免费看| 日韩女同一区二区三区| 五月婷婷欧美激情| 欧美卡一卡二卡三| 久久综合综合久久| 国产黄a三级三级| 久操免费在线视频| 中文字幕在线观看视频网站| 日本a在线观看| 人人草在线观看| 国产精品无码久久av| 国内精品偷拍视频| 成人av手机在线| 老司机亚洲精品| 国产老肥熟一区二区三区| 久久免费美女视频| 日韩美女视频一区二区 | 国产一二三区精品| 国产在线视频二区| 久久久久成人精品无码| 正在播放木下凛凛xv99| 亚洲在线视频播放| 国产欧美一级片| 久久激情五月激情| 91年精品国产| 亚洲一区欧美一区| 欧洲视频一区二区| 精品福利av导航| 精品国产网站地址| 91精品国产乱码久久久久久久久| 国产精自产拍久久久久久蜜| 欧洲久久久久久| 欧美中日韩在线| 狠狠操狠狠干视频| 亚洲图片第一页| 国产情侣在线视频| 中文字幕在线2019| 视频在线观看一区| 成人黄色国产精品网站大全在线免费观看 | 成人乱码一区二区三区| 国产福利精品一区| 中文字幕一区二区三区乱码在线| 精品电影在线观看| 亚洲国产精品久久久| 欧美另类极品videosbest最新版本| 欧美在线视频观看| 欧美日韩精品免费看| 亚洲a∨一区二区三区| 日韩在线一级片| 亚洲一区二区三区四区五区六区| caoporn91| 亚洲精品字幕在线观看| 国产成人在线电影| 一区二区三区免费| 亚洲风情亚aⅴ在线发布| 欧美大片在线看| 国产成人精品综合| 亚洲午夜在线观看| 中文字幕第22页| 久久伊人成人网| 久久久噜噜噜| 国产亚洲精品bt天堂精选| 91福利资源站| 最近2019年中文视频免费在线观看| 青青草精品毛片| 亚洲高清不卡一区| 一女二男3p波多野结衣| 四虎国产精品成人免费入口| 亚洲中文无码av在线| 精东粉嫩av免费一区二区三区| 最新欧美精品一区二区三区| 欧美一区二区三区日韩视频| 欧美福利视频在线| 日本成人看片网址| 91人妻一区二区三区| 日韩av在线播放观看| 精品一区二区三区在线播放| 亚洲资源在线观看| 精品爽片免费看久久| 亚洲iv一区二区三区| 国产超级av在线| 精品国产大片大片大片| 午夜精品久久久久久久爽| 久久午夜色播影院免费高清| 在线播放欧美女士性生活| 97国产在线视频| 国产久一道中文一区| 天天干在线影院| 超碰手机在线观看| 日韩国产在线观看| 亚洲国产一区二区三区青草影视| 亚洲乱码一区二区| 国产一区二区高清视频| 激情五月俺来也| 91精品少妇一区二区三区蜜桃臀| 欧美一级免费片| 一色屋精品亚洲香蕉网站| 亚洲精品有码在线| 成人国产一区二区| 91香蕉视频导航| 欧美性猛交bbbbb精品| 国产一区二区久久| 欧美色中文字幕| 日韩美女免费观看| 国产婷婷一区二区三区| 人人妻人人藻人人爽欧美一区| 黄色www视频| 亚洲一区二区三区视频在线播放 | 国产二区国产一区在线观看| 日本道色综合久久| 欧美一级大片视频| 国产精品后入内射日本在线观看| 久久婷婷一区二区| 日本视频在线一区| 欧美日韩精品久久久| 国产精欧美一区二区三区| 亚洲中文字幕无码不卡电影| 久久精品一区二区三| 国产精品一区二区久久精品爱涩| 欧美久久久影院| 亚洲自拍高清视频网站| 男生操女生视频在线观看| 国产毛片一区二区三区va在线| 久久久久久久久久美女| 欧美一级搡bbbb搡bbbb| 丁香五月网久久综合| 国产精品熟妇一区二区三区四区 | 国产一区二区欧美日韩| 色一情一区二区三区四区| 精品人妻一区二区三区蜜桃视频| 日韩1区2区3区| 欧美理论片在线| 91精品中国老女人| 最新av免费在线观看| 精品国产伦一区二区三区| 亚洲成人中文在线| 国产精品777| 国产探花在线看| 国产精品男女视频| 亚洲色图在线视频| 欧美多人爱爱视频网站| 春日野结衣av| 姑娘第5集在线观看免费好剧| 国产精品久久久99| 2019中文在线观看| 一区二区成人网| 老熟妇一区二区三区| 亚洲午夜精品在线| 国产成人综合精品| 无码人妻丰满熟妇啪啪网站| 日本色综合中文字幕| 欧美大片日本大片免费观看| 51午夜精品国产| 国产精品免费久久| www.av日韩| 国产精品99一区|