当前位置: 代码迷 >> Sql Server >> 小妹请问怎么生成九位的随机密码
  详细解决方案

小妹请问怎么生成九位的随机密码

热度:60   发布时间:2016-04-27 14:55:48.0
小妹请教如何生成九位的随机密码!
今天我接到一个任务,要生成一个九位的随机密码!

要数字0-9 字母 A-F

随机取这里面的字母和数字。只要九位。

请问各位前辈应该如何去做!我确实没做过这方面开发!

------解决方案--------------------
SQL code
--参考:declare   @maxNumber   int,   --随机数最大值    @minNumber   int,   --随机数最小值                   @rows   int               --要取得的行数   select   @maxNumber=10000, @minNumber=10000,                 @rows=10       set   rowcount   @rows       select   distinct   '1234 4567 '+convert(varchar,ID)+' '+convert(varchar,ID)+' '+convert(varchar,ID)+' '+convert(varchar,ID)   as   'B'   from   (                    select   convert(int,rand(checksum(newid()))[email protected])   as   ID                   from   syscolumns,sysobjects               )t       set   rowcount   0 -----------------------------------declare     @num1     int ,@num2     int ,@num3     int ,@num4     int   set @num1=rand(abs(convert(int,checksum(newid()))))*10000set @num2=rand(abs(convert(int,checksum(newid()))))*10000set @num3=rand(abs(convert(int,checksum(newid()))))*10000set @num4=rand(abs(convert(int,checksum(newid()))))*10000   select   convert(varchar(100),@num1)+' '+convert(varchar(100),@num2)+' '+convert(varchar(100),@num3)+' '+convert(varchar(100),@num4)---------------------------------------declare @r1 numeric (15,0),@r2 numeric (15,0)SELECT @r1=RAND( (DATEPART(mm, GETDATE()) * 100000 )           + (DATEPART(ss, GETDATE()) * 1000 )           + DATEPART(ms, GETDATE()) )*10000print @r1
------解决方案--------------------
探讨
SQL code
1> select right(newid(),9);
2> go

------------------
738ED4F91

(1 行受影响)

------解决方案--------------------
SQL code
--把2楼的写成个函数--见newid视图create view v_newid as select [id] = newid()--建函数,获取随即9位数据+字母密码create function f_getRandPassword9()returns varchar(9)asbegin    declare @result varchar(9)    select @result = right(id,9) from v_newid;    return @result;end--查询结果select dbo.f_getRandPassword9()--结果/*---------357771BF6(1 行受影响)*/
------解决方案--------------------
select right(newid(),9) 最好,而且简单
------解决方案--------------------
可能重复的几率有多大呀。 很少遇到重复,不信你试试。
------解决方案--------------------
探讨
select right(newid(),9) 最好,而且简单

------解决方案--------------------
我的经验是,先设定一个字符串"0123456789ABCDEF",这个16位字母,
然后随机取一个字符,连续抽取9个随机字符拼成密码。
------解决方案--------------------
.NET code
/// <summary>
/// 生成长度为9的随机数
/// </summary>
/// <returns>随机数字(包括字母)</returns>
public string RandomCode()
{
//生成的单个随机数
int ii生成的随机数;
//生成的单个随机数经过运算转换成的字符
char cc单个字符;
//待生成的随机数(包括字母)
string ss随机数字 = String.Empty;
//随机数生成器
Random ooRandom = new Random();

for (int i = 0; i < 9; i++)
{
//生成长度为9的随机数
ii生成的随机数 = ooRandom.Next();
if (ii生成的随机数 % 2 == 0)
//纯数字
cc单个字符 = (char)('0' + (char)(ii生成的随机数 % 10));
else
//字母数字混合
cc单个字符 = (char)('A' + (char)(ii生成的随机数 % 26));
ss随机数字 += cc单个字符.ToString();
  相关解决方案