IFOBJECT_ID ('RandomStr','P') ISNOTNULL DROPproc RandomStr go createproc RandomStr @RandomStrvarchar(6) output as BEGIN declare@svarchar(60) declare@rvarchar(6) declare@posint declare@lenint set@s='0123456789' set@len=len(@s); set@r='' whilelen(@r) <6 begin set@pos=cast(rand()*100asint); while@pos>@lenor@pos<1 begin if(@pos<1) set@pos=cast(rand()*100asint); else set@pos=cast(@pos/2asint); end set@r=@r+substring(@s, @pos, 1) end set@RandomStr=@r END 纯数据的话,以下方式更简单(生成9位以下) createproc randnum @lenbigint ,--需要的长度 @seedint, --需要的种子 @randint output--需要的结果 as begin declare@rvalint set@len=power(10,@len); set@rval=rand(@seed)*@len; while(@rval<(@len)/10) begin set@seed=@seed+1; set@rval=rand(@seed)*@len; end set@rand=@rval; end --测试 declare@tint,@seedint set@seed=datepart(ms,getdate()); exec randnum 9,@seed,@t output print@t