怎样随机从一个集合中选取8到12个字符组成一条纪录?

这个集合是(ABCDEFGHIGKLMNOPQRSTUVWXYZ123456789),我想从中取出8到12个字符
插入到数据库中,不断的插入得到300条纪录,在存储过程中如何实现?
---------------------------------------------------------------

--存放结果的表:
create table result(a varchar(20))

--过程:
declare @string varchar(200)
declare @i int,@j int
declare @sqlstr nvarchar(1000)
declare @randresult varchar(20)
set @string='ABCDEFGHIGKLMNOPQRSTUVWXYZ123456789'

set @j=8+cast(rand(checksum(newid()))*5 as int)

select top 200 identity(int,1,1) N into #temp1 from sysobjects

select substring(string,N,1) as char_1 into ##temp2 from (select @string as string) a,#temp1 where substring(string,N,200)<>''

set @i=1
while @i<=300
begin
set @j=8+cast(rand(checksum(newid()))*5 as int)
print @j
set @sqlstr='set @result='''' select @result=@result+char_1 from (select top '+rtrim(@j)+' * from ##temp2 order by newid()) a'
exec sp_executesql @sqlstr,N'@result varchar(20) output',@randresult output
insert result(a) values(@randresult)
set @i=@i+1
end

select * from result
drop table #temp1
drop table ##temp2

--部分结果:
KMT3XWRCVG
ZN4KRY71XWE2
ZE6I7SQH4GF
G1AWEVNMD954
P2NGVZ7UL8G
G31I8RWOCLFD
ZQMGXBIOS69
GD32W4VFA
ZHY4BP9CT6K
8T4KE59V6Z
QWSE3GXHF58L
K416FDI3QU
HG81PK3S
IYXDBQPKLM
9UY8KPTL
FB6CNLV9QOZH
DRYOSA3XBT
GNFKQU124
DPNAI43275YC
4SLMGYGD
OFXCRSLQIAN
91IBGO6FVWQ2
GWAQ1S6MRB
GVZUA1NO86BL
W685Y493
G3PZX5NOUM
VG1WG7C6XIOK
GZ4BH6OWASMN
E8U9G2ZY4NP
G6PUM43YGEV8
Q8ULOFT6
GBWR4FQ2
---------------------------------------------------------------

declare @string varchar(200)
declare @i int,@j int,@X int
declare @sqlstr nvarchar(1000)
declare @MakeStr varchar(20)
set @string='ABCDEFGHIGKLMNOPQRSTUVWXYZ123456789'
select @i=0
while @I<300
begin
----随机得到长度
select @MakeStr=''
select @j=8+cast(rand()*5 as int)
select @x=0
while @X<@j
begin
select @MakeStr=@MakeStr+substring(@string,cast(rand()*35 as int),1)
select @X=@X+1
end

print @MakeStr ----改成你的insert语句
select @I=@I+1
end

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus