select * from northwind..orders order by newid()
--隨機排序
select top 10 * from northwind..orders order by newid()
--從orders 表中隨機取出10 條記錄
示例a.對變數使用newid 函式
以下示例使用newid() 對宣告為uniqueidentifier 資料型別的變數賦值。在測
試uniqueidentifier 資料型別變數的值之前,先輸出該值。
-- creating a local variable with declareset syntax.
declare @myid uniqueidentifier
set @myid = newid()
print 'value of @myid is '+ convert(varchar(255), @myid)
下面是結果集:
value of @myid is 6f9619ff-8b86-d011-b42d-00c04fc964ff
注意:newid 對每台計算機前往的值各不相同。所顯示的數字僅起解釋說明的作用。
隨機函式:rand()
在查詢分析器中執行:select rand(),可以看到結果會是類似於這樣的隨機小數:
0.36361513486289558,像這樣的小數在實際應用中用得不多,一般要取隨機數都會取隨機
整數。那就看下面的兩種隨機取整數的方法:
1、a:select floor(rand()*n) ---生成的數是這樣的:12.0
b:select cast( floor(rand()*n) as int) ---生成的數是這樣的:12
2、a:select ceiling(rand() * n) ---生成的數是這樣的:12.0
b:select cast(ceiling(rand() * n) as int) ---生成的數是這樣的:12
其中裡面的n 是乙個你指定的整數,如100,可以看出,兩種方法的a 方法是帶有.0
這個的小數的,而b 方法就是真正的整數了。
大致一看,這兩種方法沒什麼區別,真的沒區別?其實是有一點的,那就是他們的生成隨機
數的範圍:
方法1 的數字範圍:0 至n-1 之間,如cast( floor(rand()*100) as int)就會生成0
至99 之間任一整數
方法2 的數字範圍:1 至n 之間,如cast(ceiling(rand() * 100) as int)就會生成1
至100 之間任一整數
對於這個區別,看sql 的聯機幫助就知了:
比較ceiling 和floor
ceiling 函式前往大於或等於所給數字表示式的最小整數。floor 函式前往小於或
等於所給數字表示式的最大整數。例如,對於數字表示式12.9273,ceiling 將前往13,
floor 將前往12。floor 和ceiling 前往值的資料型別都與輸入的數字表示式的數
據型別相同。
現在,各位就可以根據自己需要使用這兩種方法來取得隨機數了^_^
另外,還要提示一下各位菜鳥,關於隨機取得表中任意n 條記錄的方法,很簡單,就
用newid():
select top n * from table_name order by newid() ----n 是乙個你指定的整
數,表是取得記錄的條數.
舉例:經過測試發現:
if object_id('tb') is not null
drop table tb
create table tb (s_id int,t_id int, fenshu int)
insert into tb
select 1,1,66 union all
select 1,2,67 union all
select 2,1,65 union all
select 2,2,78 union all
select 3,1,66 union all
select 3,2,55
--這個方法可以給不同數加上不同隨機數(newid( ))
select fenshu,(fenshu+cast(ceiling(rand(checksum(newid()))*10)as int))as fenshu
from tb
--這個方法只能給不同數隨機加上相同數(rand( ))
select fenshu,(fenshu+cast(ceiling(rand() * 10) as int))as fenshu
from tb
或者select fenshu,fenshu+cast(ceiling(rand(checksum(rand()))*10) as int) fenshu2
from tb
/*------------
66 68
67 74
65 75
78 80
66 73
55 58
66 68
67 69
65 67
78 80
66 68
55 57
程式生成隨機數與SQL語句生成隨機數
隨機數可以通過程式生成,也可以通過sql語句生成。通過程式生成隨機數時一般採用硬體的編號 時間作為種子,這種方法在瞬間插入資料庫n條資料的時候會影響隨機數的效果,生成很多相鄰的插入值相同。所以頻繁插入時可以使用sql語句的內建函式生成隨機數,可以避免此類事情發生。demo c int min 0,m...
隨機生成隨機數
現畫乙個command命令按鈕,進行貼上。private sub command1 click show me scale 0,0 18,8 me.auto redraw true me.draw mode 2 circle 3,4 3,vb red me.auto redraw false lin...
隨機數生成
原型 void srand unsigned seed 用法 srand和rand 配合使用產生偽隨機數序列。rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。sr...