sql generate unique random numbers

--Create a view (because newid() cannot be used directly in a function)    
create view V_Newid    
as    
select switch () N'MacoId ';    
go    
-- create function   
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)


This instance has been tested within 1 million pieces of data, and the 10-digit random numbers will not be repeated.
From : http://blog.csdn.net/mssql_dba/article/details/39694563

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326119517&siteId=291194637