sql的随机读取

sql随机读取有两种方式:newid()和rand();

newid:

    SELECT * FROM Northwind..Orders ORDER BY NEWID() --随机排序

    SELECT TOP 10 * FROM Northwind..Orders ORDER BY NEWID() --从Orders表中随机取出10条记录

    原理是:把所有的ID取出,然后用随机函数取出其中一个,然后用这个随机取到的ID去数据库里再取出记录,所以代价有点大。newid在扫描数据库的每条记录时候,会随机产生一个id, 返回的uniqueidentifier类型的唯一值。多了一个扫描记录产生随机id的操作。

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

    方法1的数字范围:0至N-1之间,如cast( floor(rand()*100) as int)就会生成0至99之间任一整数
    方法2的数字范围:1至N之间,如cast(ceiling(rand() * 100) as int)就会生成1至100之间任一整数

注:cast和conver类似,但是 使用 CAST: CAST ( expression AS data_type ) 使用 CONVERT: CONVERT (data_type[(length)], expression [, style]) 可以看到,convert比CAST多了一个style,在转化成日期类型时,因为需要格式要求,cast就不合适了,应该还有其他一些需要转化格式的,比如金钱等等,这个看看帮助就知道了。 其他时候,二者实现的功能都一样。 都是转化类型的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值