Mysql 自定義隨機(jī)字符串的實(shí)現(xiàn)方法
前幾天在開(kāi)發(fā)一個(gè)系統(tǒng),需要用到隨機(jī)字符串,但是mysql的庫(kù)函數(shù)有沒(méi)有直接提供,就簡(jiǎn)單的利用現(xiàn)有的函數(shù)東拼西湊出隨機(jī)字符串來(lái).下面簡(jiǎn)單的說(shuō)下實(shí)現(xiàn)當(dāng)時(shí).
1.簡(jiǎn)單粗暴.
select ..., substring(MD5(RAND()),floor(RAND()*26)+1,6) as rand_str .....
上訴示例產(chǎn)生的是:6位長(zhǎng)度的隨機(jī)字符串.
函數(shù)解釋:
rand() :產(chǎn)生 0-1之間的小數(shù),簡(jiǎn)稱種子.rand()*25 產(chǎn)生的數(shù) 在 0- 25 之間,不包括25
floor(val): 生成最近接val的最大整數(shù)
md5() :對(duì)字符串進(jìn)行Md5加密(單向),生成的字符串長(zhǎng)度是32位。
substring(str,pos,len):截取字符串,第一個(gè)參數(shù):待截取的字符串,第二個(gè)參數(shù):開(kāi)始的位置(這里有些不同,下標(biāo)開(kāi)始位置為1,可以試試下),第三個(gè)參數(shù):截取的長(zhǎng)度.
2.將方式1進(jìn)行包裝一下:自定義函數(shù)
drop function if exists rand_str; #第一句: 如果存在重名函數(shù),就將其刪除 create function rand_str(strlen smallint) returns varchar(255) #第二句: 定義一個(gè)函數(shù),名稱'rand_str' ,參數(shù)名 strlen 參數(shù)類型 smallint , 返回值類型 varchar(255) ,特別 注意下 這里的 是returns 下面的是 return #BEGIN #相當(dāng)于左大括號(hào) '{' DECLARE result_str VARCHAR(255) DEFAULT ''; #聲明返回值對(duì)象,類型 ,長(zhǎng)度 ,默認(rèn)值 SET result_str =SUBSTRING(MD5(RAND()),32-strlen,strlen); #設(shè)置返回值對(duì)象的值 方式1中簡(jiǎn)單粗暴的函數(shù) RETURN result_str; #返回 結(jié)果對(duì)象 這里的是 return END # 結(jié)束標(biāo)識(shí) 相當(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)方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- mysql生成隨機(jī)字符串函數(shù)分享
- MySQL中隨機(jī)生成固定長(zhǎng)度字符串的方法
- MySQL中字符串索引對(duì)update的影響分析
- python實(shí)現(xiàn)mysql的單引號(hào)字符串過(guò)濾方法
- Mysql字符串字段判斷是否包含某個(gè)字符串的2種方法
- Mysql中實(shí)現(xiàn)提取字符串中的數(shù)字的自定義函數(shù)分享
- mysql截取的字符串函數(shù)substring_index的用法
- sqlserver、mysql獲取連接字符串步驟
- Mysql字符串處理函數(shù)詳細(xì)介紹、總結(jié)
- mysql獲取字符串長(zhǎng)度函數(shù)(CHAR_LENGTH)
相關(guān)文章
如何通過(guò)SQL找出2個(gè)表里值不同的列的方法
本篇文章對(duì)如何通過(guò)SQL找出2個(gè)表里值不同的列的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05MySql判斷漢字、日期、數(shù)字的具體函數(shù)
這篇文章主要大家詳細(xì)介紹了MySql判斷漢字、日期、數(shù)字的具體函數(shù),感興趣的小伙伴們可以參考一下2016-05-05mysql(5.6及以下)解析json的方法實(shí)例詳解
這篇文章主要介紹了mysql(5.6及以下)解析json的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07MySQL 索引和數(shù)據(jù)表該如何維護(hù)
使用合適的數(shù)據(jù)類型完成數(shù)據(jù)表創(chuàng)建和建立索引后,工作并沒(méi)有完結(jié)——你需要去維護(hù)數(shù)據(jù)表和索引以保證它們運(yùn)行良好。數(shù)據(jù)表維護(hù)的主要目的是查找和修復(fù)沖突,維護(hù)精確的索引統(tǒng)計(jì)和減少碎片。2021-05-05MySQL對(duì)數(shù)據(jù)表已有表進(jìn)行分區(qū)表的實(shí)現(xiàn)
本文主要介紹對(duì)現(xiàn)有的一個(gè)表進(jìn)行創(chuàng)建分區(qū)表,并把數(shù)據(jù)遷移到新表,可以按時(shí)間來(lái)分區(qū),具有一定的參考價(jià)值,感興趣的可以了解一下2021-10-10MySQL創(chuàng)建唯一索引時(shí)報(bào)錯(cuò)Duplicate?entry?*?for?key問(wèn)題
這篇文章主要介紹了MySQL創(chuàng)建唯一索引時(shí)報(bào)錯(cuò)Duplicate?entry?*?for?key問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09