程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> sql server中隨機函數NewID()和Rand()

sql server中隨機函數NewID()和Rand()

編輯:MSSQL

sql server中隨機函數NewID()和Rand()。本站提示廣大學習愛好者:(sql server中隨機函數NewID()和Rand())文章只能為提供參考,不一定能成為您想要的結果。以下是sql server中隨機函數NewID()和Rand()正文


在SQL Server中,隨機函數有rand(),NewID(),個中rand是在0到1內隨機取數,NewID則是生成隨機的uniqueidentifier獨一標識符。

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是一個你指定的整數,表是獲得記載的條數.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved