第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

三個隨機產(chǎn)生密碼的存儲過程

標簽:
SQL Server

协助一个朋友做一个小网站,其中一个功能,是让用户注册成功之后,系统将随机产生一个登录密码,并自动发送至注册邮箱中,朋友的做法是为了用户使用真实邮箱。

随机产生密码,Insus.NET总结了三个,并分别写成了存储过程。

第一个,

5acf072b0001405b00110016.jpgusp_RandomPassword CREATE PROCEDURE [dbo].[usp_RandomPassword] 
(
   @Length INT = 8
)
AS
BEGIN      
    DECLARE @RandomPassword NVARCHAR(MAX) = N'',@L INT = 1
    WHILE @L <= @Length  --循环密码长度
    BEGIN
        --随机产生每一位字符,ASCII码48至122
        DECLARE @RndChar CHAR(1) = CHAR(ROUND(RAND() * (122-48+1) + 48,0))
        --随机产生的字符不包括下面字符
        IF ASCII(@RndChar) NOT IN(58,59,60,61,62,63,64,91,92,93,94,95,96) -- : , ; , < , = , > , ? ,@ , [ , \ , ] , ^ , _ , `
        BEGIN
            SET @RandomPassword = @RandomPassword + @RndChar
            SET @L = @L + 1
        END        
    END
    SELECT @RandomPassword
END

 

第二个,

5acf072b0001405b00110016.jpgusp_RandomPassword CREATE PROCEDURE [dbo].[usp_RandomPassword] 
(
   @Length INT = 8
)
AS
BEGIN  
    DECLARE @RandomPassword NVARCHAR(MAX) = N'',@L INT = 1
    --随机密码将由下面字符串产生,数字0-9,大写字母A-Z,小写字母a-z
    DECLARE @BaseString VARCHAR(255) = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'  
    WHILE @L <= @Length --循环密码长度
    BEGIN
        --61是变量@BaseString的长度减一
        SET @RandomPassword = @RandomPassword + SUBSTRING(@BaseString, CONVERT(INT,ROUND(RAND() * 61 + 1,0)),1)
        SET @L = @L + 1
    END
    SELECT @RandomPassword
END

 

第三个,

5acf072b0001405b00110016.jpgusp_RandomPassword CREATE PROCEDURE [dbo].[usp_RandomPassword] 
(
   @Length INT = 8
)
AS
BEGIN  
    DECLARE @RandomPassword NVARCHAR(MAX) = N'' 
    DECLARE @R TINYINT,@L INT = 1      
    WHILE  @L <= @Length --循环密码长度
    BEGIN
        SET @R = ROUND(RAND() * 2, 0)    --随机产生0,1,2整数
        IF @R = 0 --当变量为0时,将随机产生一位数字
            SET @RandomPassword = @RandomPassword + CHAR(ROUND(RAND() * 9 + 48,0)) 
        ELSE IF @R = 1 --当变量为1时,将随机产生一位大写字母
            SET @RandomPassword = @RandomPassword + CHAR(ROUND(RAND() * 25 + 65,0)) 
        ELSE IF @R = 2 --当变量为2时,将随机产生一位小写字母
            SET @RandomPassword = @RandomPassword + CHAR(ROUND(RAND() * 25 + 97,0))            
        SET @L = @L + 1
    END
    SELECT @RandomPassword
END

 

最后一个也可以重构写成:

5acf072b0001405b00110016.jpgusp_RandomPassword CREATE PROCEDURE [dbo].[usp_RandomPassword] 
(
   @Length INT = 8
)
AS
BEGIN  
    DECLARE @RandomPassword  NVARCHAR(MAX) = N'',@L INT = 1   
    WHILE @L <= @Length --循环密码长度
    BEGIN         
        DECLARE @R INT = ROUND(RAND() * 2, 0) 
        SET @RandomPassword = @RandomPassword + CASE @R
        WHEN 0 THEN CHAR(ROUND(RAND() * 9 + 48,0)) 
        WHEN 1 THEN CHAR(ROUND(RAND() * 25 + 65,0)) 
        WHEN 2 THEN CHAR(ROUND(RAND() * 25 + 97,0)) END                            
        SET @L = @L + 1        
    END
    SELECT @RandomPassword
END

 


點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消