生成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 intDECLARE @SerialNumber nvarchar(20)--初始化设定SET @i=1SET @SerialNumber = ''--生成10位随机码WHILE @i<11BEGIN--设置随机,这个随机会选择字母(大小写)还是数字SET @flag=ceiling(rand()*3) IF @flag=1 BEGIN--随机字母(大写)select @SerialNumber=@SerialNumber+char(65+ceiling(rand()*25))ENDelse if @flag=2begin--随机字母(小写)select @SerialNumber=@SerialNumber+char(97+ceiling(rand()*25))endelse begin--随机数字 1至9的随机数字(整数)select @SerialNumber=@SerialNumber+cast(ceiling(rand()*9) as varchar(1))end--进行下一个循环SET @i=@i+1ENDSELECT @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 INTDECLARE @SerialNumber nvarchar(20)--初始化设定SET @i=1SET @SerialNumber = ''--生成10位随机码WHILE @i<11BEGIN--设置随机,这个随机会选择字母(大小写)还是数字SET @flag=ceiling(rand()*3) IF @i < 6 --前五位是字母BEGINIF @flag=1 BEGIN--随机字母(大写)select @SerialNumber=@SerialNumber+char(65+ceiling(rand()*25))ENDELSE BEGIN--随机字母(小写)select @SerialNumber=@SerialNumber+char(97+ceiling(rand()*25))ENDENDELSE BEGIN --后面几位是字母或数字IF @flag=1 BEGIN--随机字母(大写)select @SerialNumber=@SerialNumber+char(65+ceiling(rand()*25))ENDelse if @flag=2begin--随机字母(小写)select @SerialNumber=@SerialNumber+char(97+ceiling(rand()*25))endelse begin--随机数字 1至9的随机数字(整数)select @SerialNumber=@SerialNumber+cast(ceiling(rand()*9) as varchar(1))endEND--进行下一个循环SET @i=@i+1ENDSELECT @SerialNumber as '生成的10位激活码'