“Hi,我看了你这篇 最后一种的写法随机产生密码,觉得很好,并应用在我的程序中,但是上星期老板对我说,要在随机产生的密码带有特殊字符。我再次测试过之后,才发现你的函数产生的密码只是大小写英文字母和数字,并无包含特殊字符,我要怎样改它呢?”
上面全文来自QQ留言。
解决你的问题,需要使用上面相同一篇博文的第二种方法相结合,才可以,其实方法还有其它的,下面仅是Insus.NET想到的一种,仅供你参考,有问题,请继续来信,留言或在线讨论:
usp_RandomPassword
ALTER PROCEDURE [ dbo ]. [ usp_RandomPassword ] ( @Length INT = 8 ) AS BEGIN DECLARE @RandomPassword NVARCHAR( MAX) = N '', @L INT = 1 -- 下面的变量,你可以自定制需要的特殊字符 DECLARE @SpecialCharacter NVARCHAR( 255) = ' @#$%&*? ' WHILE @L <= @Length BEGIN -- 下面这句,Insus.NET把2改为3。 DECLARE @R INT = ROUND( RAND() * 3, 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)) WHEN 3 THEN SUBSTRING( @SpecialCharacter, CONVERT( TINYINT, ROUND( RAND() * 6 + 1, 0)), 1) END -- 添加此句 SET @L = @L + 1 END SELECT @RandomPassword END
升级篇,可参考: