--创建视图(因为在函数中无法直接使用newid()) create view V_Newid as select newid() N'MacoId'; go --创建函数 create function sf_getrandstr(@n int) returns varchar(max) as begin declare @i int set @i=ceiling(@n/32.00) declare @j int set @j=0 declare @k varchar(max) set @k='' while @j<@i begin select @k=@k+replace(cast(MacoId as varchar(36)),'-','') from V_Newid set @j=@j+1 end set @k=substring(@k,1,@n) return @k end select dbo.sf_getrandstr(10)
此实例经过测试100万条数据内,10位的随机数都不会重复
转自:http://blog.csdn.net/mssql_dba/article/details/39694563