sql 兩個數字范圍取隨機數


常用到通過兩個數字之間獲取隨機數,C#中有內置方法,數據庫中沒有。以前有找到過一個方法,是通過數據庫自定義函數實現,但是找不到了,今天自己寫了個,記錄下來備用!

 

代碼如下:

if  exists( select  *  from sys.objects  where name  =  ' f_random ')
     drop  function f_random
go
/*
兩個數之間獲取隨機數
*/
create  function f_random
(
     @min_num  int,
     @max_num  int
)
returns  int
as
begin
     declare  @basicnumber  decimal( 18, 9)     -- 基數
     declare  @randnumber  decimal( 18, 9-- 隨機數
     if  @max_num  <=  10
         set  @basicnumber  =  10
     else  if  @max_num  <=  100
         set  @basicnumber  =  100
     else  if  @max_num  <=  1000
         set  @basicnumber  =  1000
     else  if  @max_num  <=  10000
         set  @basicnumber  =  10000
     while  1  =  1
     begin
         select  @randnumber  = randvalue  from vRandom
         set  @randnumber  =  @randnumber  *  @basicnumber
         if  @randnumber  >=  @min_num  and  @randnumber  <  @max_num
             break
         else
             continue
     end
     return  cast( @randnumber  as  int)
end
go

使用方法:

select dbo.f_random(1,100) as randnum    

一定要加dbo!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM