/*----------------------------------批量生成随机的字符串----------------------------------*/
--如果在已知数据库中存在GetRandStr这个存储过程,则删除(为了方便反复执行这段代码) if exists(select * from sys.objects where name='GetRandStr' and type='P') drop proc GetRandStr go --随机字符串存储过程 create proc GetRandStr -- @count是随机字符串个数,@no则是最终生成的随机字符串 (@count int,@no varchar(1000) output) as begin --@randomstr是每次随机的字符累加的值 declare @randomstr varchar(1000) --@charpool是产生随机字符的字符序列 declare @charpool varchar(1000) -- @i是循环次数 declare @i int --@counter 是产生随机字符的位置 declare @counter integer --设置随机序列 set @charpool='12345678910AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz' --循环初始值 set @i=1 -- 随机字符串初始值 set @randomstr='' --循环 while @i<@count begin here: --产生随机字符位置 (0-62的整数) set @counter=CAST(RAND()*100/1.6 as integer) -- 如果@counter = 0 就重新生成随机数 if @counter<1 goto here set @randomstr=@randomstr+SUBSTRING(@charpool,@counter,1) --循环递增 set @i=@i+1 end --最后将生成的六个随机字符加上两个固定字符'KY',组成所需的随机字符串 set @no='QQ'+LEFT(@randomstr,ISNULL(@count,180)) return end go--调用:比如要生成10个随机字符串declare @p intset @p=1while @p<=10 begin declare @substring varchar(8000) -- 调用存储过程 exec GetRandStr 8,@substring output -- 输出随机字符串 print @substring set @p=@p+1 end