NEWID()
從A表隨機取10條記錄,用
SELECT TOP 10 * FROM Northwind.dbo.Orders
ORDER BY NEWID();
或者
SELECT TOP 10 *,NEWID() AS Random FROM Northwind.dbo.Orders
ORDER BY Random;
在SSMS中可以看到它們的執行計畫是一樣的
樣本:
A. 對變數使用 NEWID 函數
DECLARE @myid uniqueidentifierSET @myid = NEWID()PRINT 'Value of @myid is: '+ CONVERT(varchar(255), @myid)
結果:
Value of @myid is: 6F9619FF-8B86-D011-B42D-00C04FC964FF
B. 在 CREATE TABLE 語句中使用 NEWID
CREATE TABLE cust(CustomerID uniqueidentifier NOT NULLDEFAULT newid(),Company varchar(30) NOT NULL,ContactName varchar(60) NOT NULL, [Address] varchar(30) NOT NULL)GOINSERT cust(CustomerID, Company, ContactName, [ADDRESS])VALUES(NEWID(), 'Wartian Herkku', 'Pirkko Koskitalo', 'Torikatu 38')
RAND()
返回一個介於 0 到 1(不包括 0 和 1)之間的偽隨機 float 值。
文法
RAND ( [ seed ] )
參數
seed : 提供種子值的整數運算式(tinyint、smallint 或 int)。如果未指定 seed,則資料庫引擎隨機分配種子值。對於指定的種子值,返回的結果始終相同。
樣本:
SELECT RAND(),返回類似的隨機小數:0.36361513486289558
CEILING()
返回大於或等於指定數值運算式的最小整數。
文法:
CEILING ( numeric_expression )
參數
numeric_expression 是精確數字或近似數字資料類型類別(bit 資料類型除外)的運算式。
樣本:顯示使用 CEILING 函數的正數、負數和零值。
SELECT CEILING($123.45), CEILING($-123.45), CEILING($0.0)
結果:
-
--------- --------- ------------------------- 124.00 -123.00 0.00 (1 row(s) affected)
FLOOR()
返回小於或等於指定數值運算式的最大整數。
文法
FLOOR ( numeric_expression )
參數
numeric_expression 是精確數字或近似數字資料類型類別(bit 資料類型除外)的運算式。
樣本: 顯示正數、負數和貨幣值在 FLOOR
函數中的運用。
FLOOR ( numeric_expression )
結果:
SELECT FLOOR(123.45), FLOOR(-123.45), FLOOR($123.45)
--------- --------- ----------- 123 -124 123.0000
如何產生隨機整數呢?
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
方法1的數字範圍:0至N-1之間,如cast( floor(rand()*100) as int) 會產生0至99之間任一整數
方法2的數字範圍:1至N之間,如cast(ceiling(rand() * 100) as int) 會產生1至100之間任一整數