Mysql 自訂隨機字串的實現方法_Mysql

來源:互聯網
上載者:User

前幾天在開發一個系統,需要用到隨機字串,但是mysql的庫函數有沒有直接提供,就簡單的利用現有的函數東拼西湊出隨機字串來.下面簡單的說下實現當時.

1.簡單粗暴.

select ..., substring(MD5(RAND()),floor(RAND()*26)+1,6) as rand_str .....

上訴樣本產生的是:6位長度的隨機字串.

函數解釋:

rand() :產生 0-1之間的小數,簡稱種子.rand()*25 產生的數 在 0- 25 之間,不包括25

floor(val): 產生最近接val的最大整數

md5() :對字串進行Md5加密(單向),產生的字串長度是32位。

substring(str,pos,len):截取字串,第一個參數:待截取的字串,第二個參數:開始的位置(這裡有些不同,下標開始位置為1,可以試試下),第三個參數:截取的長度.

2.將方式1進行封裝一下:自訂函數

drop function if exists rand_str;#第一句: 如果存在重名函數,就將其刪除 create function rand_str(strlen smallint) returns varchar(255)#第二句: 定義一個函數,名稱'rand_str' ,參數名 strlen 參數類型 smallint , 傳回值類型 varchar(255) ,特別 注意下 這裡的 是returns 下面的是 return#BEGIN#相當於左大括弧 '{'DECLARE result_str VARCHAR(255) DEFAULT '';#聲明傳回值對象,類型 ,長度 ,預設值SET result_str =SUBSTRING(MD5(RAND()),32-strlen,strlen);#設定傳回值對象的值 方式1中簡單粗暴的函數 RETURN result_str;#返回 結果對象 這裡的是 returnEND# 結束標識 相當於 '}'

3.自訂函數 直接上代碼

每一句的實現就不解釋了,可以參加方式2中的代碼解釋看一下

DROP FUNCTION IF EXISTS rand_str;create FUNCTION rand_str(strlen SMALLINT ) RETURNS VARCHAR(255)BEGINDECLARE randStr VARCHAR(255) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';DECLARE i SMALLINT DEFAULT 0;DECLARE resultStr VARCHAR(255) DEFAULT '';WHILE i<strlen DOSET resultStr=CONCAT(SUBSTR(randStr,FLOOR(RAND()*LENGTH(randStr))+1,1),resultStr);SET i=i+1;END WHILE;RETURN resultStr;END

以上所述是小編給大家介紹的Mysql 自訂隨機字串的實現方法,希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對雲棲社區網站的支援!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.