Code CREATEFUNCTION GetPwd(@countint) RETURNSvarchar(8000) AS begin declare@temptable(id intidentityprimarykey,pwd char(1)) declare@iint,@sqlvarchar(1000) set@i=0 while@i<10 begin insertinto@tempselectltrim(@i) set@i=@i+1 end set@i=65 while@i<91 begin insertinto@tempselectchar(ltrim(@i)) set@i=@i+1 end set@i=97 while@i<123 begin insertinto@tempselectchar(ltrim(@i)) set@i=@i+1 end insertinto@tempselect'!' unionallselect'@' unionallselect'#' unionallselect'$' unionallselect'%' unionallselect'^' unionallselect'&' unionallselect'*' unionallselect'(' unionallselect'_' unionallselect'+' unionallselect'~' declare@svarchar(8000) set@i=0 while@i<@count begin selecttop1@s=isnull(@s,'')+pwd from@temporderby (select*from V_getnewid) set@i=@i+1 end return@s end go CREATEview V_getnewid AS selectnewid() AS rand_id go select dbo.GetPwd(16) go --结果: /**//* Re~IWVYLe3s%#Tqo */