【轉】SQL中隨機數函數rand()簡介

轉載于:
http://database.51cto.com/art/201009/224397.htm 51 CTO-數據庫欄目

下文將為您介紹SQL中的隨機函數rand(),供您參考,如果您是才接觸SQL Server的新手,不妨一看,相信對您學習SQL中的函數會大有幫助。
在SQL Server中,有個隨機函數rand(),有不少新手可能不知道存在這個函數,現在我就把這個函數的一些隨機數生成技巧寫出來,這是面向菜鳥的,老鳥請不要拍磚呀,我的頭還不夠硬
不過還是希望老鳥們多多指教了,現在切入正題:
隨機函數:rand()
在查詢分析器中執行:select rand(),可以看到結果會是類似于這樣的隨機小數:0.36361513486289558,
像這樣的小數在實際應用中用得不多,一般要取隨機數都會取隨機整數。那就看下面的兩種隨機取整數的方法:

第一種:

A:
select floor(rand()*N) ---生成的數是這樣的:12.0
B:
select cast( floor(rand()*N) as int) ---生成的數是這樣的:12

第二種:

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是一個你指定的整數,表是取得記錄的條數 。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、字符轉換函數 1、ASCII() 返回字符表達式最左端字符的ASCII碼值。在ASCII()函數中,純數字的字...
    輝格食品閱讀 1,676評論 0 3
  • 語 句 功 能 數據操作 SELECT——從數據庫表中檢索數據行和列INSERT——向數據庫表添加新數據行DELE...
    戰敭閱讀 5,118評論 0 53
  • 一、生活事件 1、今早的睡境里我有一個非常大的花園,里面種植著各式各樣的水果樹,名貴的植物,各種各樣的花。...
    Cyylinxi閱讀 267評論 0 0
  • 若愛我 請收起你的巧克力糖果 我不喜歡太甜的炫耀夾雜著油膩 若愛我 請收起你的玫瑰花告白 我不喜歡太美的場景充斥著...
    純瑟閱讀 182評論 3 3
  • 一排路燈 朦朧著惺忪睡意的眸子 拐彎處那盞玉蘭花燈 一側懸掉著 是這個秋天垂下來的眼袋 夜,打起很響的鼾聲 而我輾...
    金指尖的花園閱讀 506評論 0 3