生成10位由大小写字母和数字组成的随机激活码

/*
select char(65+ceiling(rand()*25))   --随机字母(大写)
select char(97+ceiling(rand()*25))   --随机字母(小写)
select cast(ceiling(rand()*9) as varchar(1))   --随机数字 1至9的随机数字(整数)
*/

DECLARE  @i    int           
DECLARE  @flag int
DECLARE  @SerialNumber  nvarchar(20)

--初始化设定
SET  @i=1
SET  @SerialNumber = ''

--生成10位随机码
WHILE @i<11
BEGIN
    --设置随机,这个随机会选择字母(大小写)还是数字
    SET @flag=ceiling(rand()*3) 

    IF @flag=1 
    BEGIN
       --随机字母(大写)
       select @SerialNumber=@SerialNumber+char(65+ceiling(rand()*25))
    END
    else if @flag=2
         begin
             --随机字母(小写)
             select @SerialNumber=@SerialNumber+char(97+ceiling(rand()*25))
         end
         else begin
             --随机数字 1至9的随机数字(整数)
             select @SerialNumber=@SerialNumber+cast(ceiling(rand()*9) as varchar

(1))
         end

     --进行下一个循环
     SET @i=@i+1
END

SELECT @SerialNumber as '生成的10位激活码'

 

 

---但是有的时候需要前面几位必须是纯英文字母,后面几位纯数字或随意字母和数字

/*
select char(65+ceiling(rand()*25))   --随机字母(大写)
select char(97+ceiling(rand()*25))   --随机字母(小写)
select cast(ceiling(rand()*9) as varchar(1))   --随机数字 1至9的随机数字(整数)
*/

DECLARE  @i    int           
DECLARE  @flag INT
DECLARE  @SerialNumber nvarchar(20)

--初始化设定
SET  @i=1
SET  @SerialNumber = ''

--生成10位随机码
WHILE @i<11
BEGIN
    --设置随机,这个随机会选择字母(大小写)还是数字
    SET @flag=ceiling(rand()*3) 

    IF @i < 6  --前五位是字母
    BEGIN
            IF @flag=1 
            BEGIN
                 --随机字母(大写)
                 select @SerialNumber=@SerialNumber+char(65+ceiling(rand()*25))
            END
            ELSE BEGIN
                 --随机字母(小写)
                 select @SerialNumber=@SerialNumber+char(97+ceiling(rand()*25))
            END

     END
     ELSE BEGIN  --后面几位是字母或数字
            IF @flag=1 
            BEGIN
               --随机字母(大写)
               select @SerialNumber=@SerialNumber+char(65+ceiling(rand()*25))
            END
            else if @flag=2
                 begin
                     --随机字母(小写)
                     select @SerialNumber=@SerialNumber+char(97+ceiling(rand()*25))
                 end
                 else begin
                     --随机数字 1至9的随机数字(整数)
                     select @SerialNumber=@SerialNumber+cast(ceiling(rand()*9) as varchar(1))
                 end
     END
     
     
     --进行下一个循环
     SET @i=@i+1
END

SELECT @SerialNumber as '生成的10位激活码'

 

posted @ 2015-07-20 13:46  DBArtist  阅读(3629)  评论(0编辑  收藏  举报