sql server的隨機函式newid()和rand()
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是乙個你指定的整數,表是取得記錄的條數.
SQL隨機函式newID 和RAND 詳解
隨機函式 newid select from northwind.orders order by newid 隨機排序 select top 10 from northwind.orders order by newid 從orders表中隨機取出10條記錄 示例 a.對變數使用 newid 函式 ...
SQL隨機函式newID 和RAND 詳解
select from northwind.orders order by newid 隨機排序 select top 10 from northwind.orders order by newid 從orders表中隨機取出10條記錄 示例 a.對變數使用 newid 函式 以下示例使用 newi...
如何用隨機函式rand5來構造隨機函式rand7
試一下以對話的方式寫博 如果看不到人物頭像,請重新整理頁面獲取最新的css。如果有建議或意見,歡迎到我的微博上跟帖 常規方法 echo rand7 rand7 function rand7 演算法的一些釋疑 晚些時候 gen 0,1 equal probability int rand01 retu...