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 uniqueidentifier SET @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 NULL DEFAULT newid(), Company varchar(30) NOT NULL, ContactName varchar(60) NOT NULL, [Address] varchar(30) NOT NULL ) GO INSERT 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之间任一整数