Mysql 自定義隨機(jī)字符串的實(shí)現(xiàn)方法
前幾天在開發(fā)一個系統(tǒng),需要用到隨機(jī)字符串,但是mysql的庫函數(shù)有沒有直接提供,就簡單的利用現(xiàn)有的函數(shù)東拼西湊出隨機(jī)字符串來.下面簡單的說下實(shí)現(xiàn)當(dāng)時.
1.簡單粗暴.
select ..., substring(MD5(RAND()),floor(RAND()*26)+1,6) as rand_str .....
上訴示例產(chǎn)生的是:6位長度的隨機(jī)字符串.
函數(shù)解釋:
rand() :產(chǎn)生 0-1之間的小數(shù),簡稱種子.rand()*25 產(chǎn)生的數(shù) 在 0- 25 之間,不包括25
floor(val): 生成最近接val的最大整數(shù)
md5() :對字符串進(jìn)行Md5加密(單向),生成的字符串長度是32位。
substring(str,pos,len):截取字符串,第一個參數(shù):待截取的字符串,第二個參數(shù):開始的位置(這里有些不同,下標(biāo)開始位置為1,可以試試下),第三個參數(shù):截取的長度.

2.將方式1進(jìn)行包裝一下:自定義函數(shù)
drop function if exists rand_str;
#第一句: 如果存在重名函數(shù),就將其刪除
create function rand_str(strlen smallint) returns varchar(255)
#第二句: 定義一個函數(shù),名稱'rand_str' ,參數(shù)名 strlen 參數(shù)類型 smallint , 返回值類型 varchar(255) ,特別 注意下 這里的 是returns 下面的是 return
#BEGIN
#相當(dāng)于左大括號 '{'
DECLARE result_str VARCHAR(255) DEFAULT '';
#聲明返回值對象,類型 ,長度 ,默認(rèn)值
SET result_str =SUBSTRING(MD5(RAND()),32-strlen,strlen);
#設(shè)置返回值對象的值 方式1中簡單粗暴的函數(shù)
RETURN result_str;
#返回 結(jié)果對象 這里的是 return
END
# 結(jié)束標(biāo)識 相當(dāng)于 '}'
3.自定義函數(shù) 直接上代碼
每一句的實(shí)現(xiàn)就不解釋了,可以參加方式2中的代碼解釋看一下
DROP FUNCTION IF EXISTS rand_str; create FUNCTION rand_str(strlen SMALLINT ) RETURNS VARCHAR(255) BEGIN DECLARE randStr VARCHAR(255) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; DECLARE i SMALLINT DEFAULT 0; DECLARE resultStr VARCHAR(255) DEFAULT ''; WHILE i<strlen DO SET resultStr=CONCAT(SUBSTR(randStr,FLOOR(RAND()*LENGTH(randStr))+1,1),resultStr); SET i=i+1; END WHILE; RETURN resultStr; END
以上所述是小編給大家介紹的Mysql 自定義隨機(jī)字符串的實(shí)現(xiàn)方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- mysql生成隨機(jī)字符串函數(shù)分享
- MySQL中隨機(jī)生成固定長度字符串的方法
- MySQL中字符串索引對update的影響分析
- python實(shí)現(xiàn)mysql的單引號字符串過濾方法
- Mysql字符串字段判斷是否包含某個字符串的2種方法
- Mysql中實(shí)現(xiàn)提取字符串中的數(shù)字的自定義函數(shù)分享
- mysql截取的字符串函數(shù)substring_index的用法
- sqlserver、mysql獲取連接字符串步驟
- Mysql字符串處理函數(shù)詳細(xì)介紹、總結(jié)
- mysql獲取字符串長度函數(shù)(CHAR_LENGTH)
相關(guān)文章
MySQL因配置過大內(nèi)存導(dǎo)致無法啟動的解決方法
這篇文章主要給大家介紹了關(guān)于MySQL因配置過大內(nèi)存導(dǎo)致無法啟動的解決方法,文中給出了詳細(xì)的解決示例代碼,對遇到這個問題的朋友們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-06-06
MySQL統(tǒng)計函數(shù)GROUP_CONCAT使用陷阱分析
這篇文章主要介紹了MySQL統(tǒng)計函數(shù)GROUP_CONCAT使用中的陷阱,結(jié)合實(shí)例形式分析了GROUP_CONCAT用于統(tǒng)計時的長度限制問題與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-06-06
MySQL通過show processlist命令檢視性能的講解
今天小編就為大家分享一篇關(guān)于MySQL通過show processlist命令檢視性能的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
django2.2版本連接mysql數(shù)據(jù)庫的方法
這篇文章主要介紹了django2.2版本如何連接mysql數(shù)據(jù)庫,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10
Mysql version can not be less than 4.1 出錯解決辦法
這篇文章主要介紹了Mysql version can not be less than 4.1 解決辦法的相關(guān)資料,需要的朋友可以參考下2016-10-10
linux下改良版本mysqldump來備份MYSQL數(shù)據(jù)庫
我的備份腳本都是在凌晨執(zhí)行的,經(jīng)常在慢查詢?nèi)罩纠锩婵吹竭@樣的信息:select * from table1; 之前一直很納悶,最后才了解到原來是MYSQLDUMP搞的鬼。2008-07-07
SQL Server 出現(xiàn)Error: 1326錯誤(管理器無法連接遠(yuǎn)程數(shù)據(jù)庫)問題解決方案
這篇文章主要介紹了SQL Server 出現(xiàn)Error: 1326錯誤(管理器無法連接遠(yuǎn)程數(shù)據(jù)庫)問題解決方案的相關(guān)資料,這里對1326 錯誤進(jìn)行了詳細(xì)介紹及解決辦法,需要的朋友可以參考下2016-11-11

