mysql 隨機字符的產生方法


 

需求:需要插入隨機數據,長度為6位,包含數字和大寫字母。

一般來說我們會寫類似如下的存儲過程片斷:

   declare str char(62) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
   declare str6 char(6);

   set str6=concat(substring(str,1+floor(rand()*61),1),substring(str,1+floor(rand()*61),1),substring(str,1+floor(rand()*61),1),substring(str,1+floor(rand()*61),1),substring(str,1+floor(rand()*61),1),substring(str,1+floor(rand()*61),1));

 

其實我們也可以采用下面另一種方法,用char函數,產生單一隨機字符的方法如下:

select char(if(floor(rand()*2)=0,65+floor(rand()*26),48+floor(rand()*9)))

 

當然要產生6位的話就直接復制多幾個出來就好了:

select char(if(floor(rand()*2)=0,65+floor(rand()*26),48+floor(rand()*9)),if(floor(rand()*2)=0,65+floor(rand()*26),48+floor(rand()*9)),if(floor(rand()*2)=0,65+floor(rand()*26),48+floor(rand()*9)),if(floor(rand()*2)=0,65+floor(rand()*26),48+floor(rand()*9)),if(floor(rand()*2)=0,65+floor(rand()*26),48+floor(rand()*9)),if(floor(rand()*2)=0,65+floor(rand()*26),48+floor(rand()*9)))

 

小記錄一下

以下產生的是符合位數的,不一定有意義,滿足一些測試要求:

隨機身份證:

concat('44030319',cast(UNIX_TIMESTAMP()+floor(rand()*8000000000) as char )),

 

隨機手機號:

UNIX_TIMESTAMP()*10+floor(rand()*4000000000)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM