sql 生成不重复的随机数

--创建视图(因为在函数中无法直接使用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

猜你喜欢

转载自yh-fly.iteye.com/blog/2400780