程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql 自定義隨機字符串,mysql自定義字符串

Mysql 自定義隨機字符串,mysql自定義字符串

編輯:MySQL綜合教程

Mysql 自定義隨機字符串,mysql自定義字符串


前幾天在開發一個系統,需要用到隨機字符串,但是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;
#返回 結果對象   這裡的是  return 
END
# 結束標識 相當於 '}'

  

  3.自定義函數 直接上代碼 每一句的實現就不解釋了,可以參加方式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

  

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved