`

oracle之随机数(结果集)

阅读更多
参考资料
Oracle中随机抽取N条记录
http://hpitcn.iteye.com/blog/676330
1 dbms_random.random[常用方法(随机获取一条数据)]
 select * from (select t.* from T t order by dbms_random.random) where rownum<2; 

2  内部函数sys_guid() 
select * from (select  t.* from T t order by sys_guid()) where rownum < (select  count(1) from T); 
select * from (select  t.*  from T t order by sys_guid()) where rownum <2; 

3 使用sample获得随机结果集
 select  *  from T sample(10) seed(10) where rownum<6;   
 select * from T sample block(10) where rownum<6;  


参考资料
dbms_random包
获得随机小数Sql如下:
select dbms_random.value from dual;
0.438497011075884
限制小数的取值范围可以将dbms_random.value换为dbms_random.value(30,50)
其中的30和50就是它的取值范围.
约束下小数位数Sql如下:
select round(dbms_random.value,3) from dual;
0.819   保留小数位数为3位的随机数
获得随机整数呢?
select floor(dbms_random.value(30,50)) from dual;
这样就可以取得到30到50之间的随机整数啦。
dbms_random.random这样也可以获得整数。不过值过大。

注: 在使用sys_guid() 这种方法时,有时会获取到相同的记录,即和前一次查询的结果集是一样的,查找相关资料,有些说是和操作系统有关,在windows平台下正常,获取到的数据是随机的,而在linux等平台下始终是相同不变的数据集,有些说是因为sys_guid()函数本身的问题,即sys_guid()会在查询上生成一个16字节的全局唯一标识符,这个标识符在绝大部分平台上由一个宿主标识符和进程或进程的线程标识符组成,这就是说,它很可能是随机的,但是并不表示一定是百分之百的这样。     
       所以,为确保在不同的平台每次读取的数据都是随机的,我们大多采用使用sample函数或者DBMS_RANDOM包获得随机结果集,其中使用sample函数更常用,因为其查询时缩小了查询范围,在查询大表,且要提取数据不是很不多的情况下,会对查询速度上有明显的提高。
分享到:
评论

相关推荐

    Oracle 10g应用指导

    第10章 数据库管理,包括导出数据库模式的DDL脚本,管理Oracle数据库实例的方法、数据恢复与Flashback以及更改数据库字符集等具体方法。第11章 数据库的安全管理。包括加密Oracle子程序,存储应用程序用户名和口令,...

    Oracle+10g应用指导与案例精讲

    第10章 数据库管理,包括导出数据库模式的DDL脚本,管理Oracle数据库实例的方法、数据恢复与Flashback以及更改数据库字符集等具体方法。第11章 数据库的安全管理。包括加密Oracle子程序,存储应用程序用户名和口令,...

    程序员的SQL金典6-8

     4.8.4 联合结果集应用举例 第5章 函数  5.1 数学函数  5.1.1 求绝对值  5.1.2 求指数  5.1.3 求平方根  5.1.4 求随机数  5.1.5 舍入到最大整数  5.1.6 舍入到最小整数  5.1.7 四舍五入  5.1.8 求正弦值 ...

    程序员的SQL金典7-8

     4.8.4 联合结果集应用举例 第5章 函数  5.1 数学函数  5.1.1 求绝对值  5.1.2 求指数  5.1.3 求平方根  5.1.4 求随机数  5.1.5 舍入到最大整数  5.1.6 舍入到最小整数  5.1.7 四舍五入  5.1.8 求正弦值 ...

    程序员的SQL金典4-8

     4.8.4 联合结果集应用举例 第5章 函数  5.1 数学函数  5.1.1 求绝对值  5.1.2 求指数  5.1.3 求平方根  5.1.4 求随机数  5.1.5 舍入到最大整数  5.1.6 舍入到最小整数  5.1.7 四舍五入  5.1.8 求正弦值 ...

    程序员的SQL金典3-8

     4.8.4 联合结果集应用举例 第5章 函数  5.1 数学函数  5.1.1 求绝对值  5.1.2 求指数  5.1.3 求平方根  5.1.4 求随机数  5.1.5 舍入到最大整数  5.1.6 舍入到最小整数  5.1.7 四舍五入  5.1.8 求正弦值 ...

    程序员的SQL金典.rar

    轻举技术之“纲”,张合用之“目”,锻造SQL高可用性数据库应用指南从理论到实践,凝聚SQL主流数据库最前沿的技术要领,本书将深入浅出讨论。  本书特色:主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在...

    经典全面的SQL语句大全

    首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID 的值、检查其是否匹配RNumber。满足条件的话就执行由THEN 关键字开始的那一块代码。假如你的RNumber 等于...

    matasano:Matasano(现为NCC Group)加密货币挑战解决方案

    松野 Matasano(现为NCC Group)加密... 编写一个oracle函数并使用它来检测ECB 一次字节ECB解密,完全控制版本 欧洲央行剪切粘贴 一次字节ECB解密,部分控制版本 PKCS#7填充验证 CBC翻转 习题集3 CBC填充orac

    C#基类库(苏飞版)

    构建 OracleCommand 对象(用来返回一个结果集,而不是一个整数值); 17.执行存储过程,返回影响的行数; 18.创建 OracleCommand 对象实例(用来返回一个整数值) 复制代码 6.DbHelperSQLite类 [code=csharp] 1.数据访问...

    jdk1.8.0_181(64位).7z

    3、Compact Profiles包含Java SE平台的预定义子集,并支持不需要在小型设备上部署和运行整个Platform的应用程序。 4、安全 默认情况下启用客户端TLS 1.2 新的变体AccessController.doPrivileged使代码能够断言其...

    C#编程经验技巧宝典

    数据处理 91 &lt;br&gt;5.1 数字处理技巧 92 &lt;br&gt;0140 如何对计算结果四舍五放入 92 &lt;br&gt;0141 如何将商品金额小写转换成大写 92 &lt;br&gt;0142 如何根据生日自动计算员工年龄 93 &lt;br&gt;0143 如何设置...

Global site tag (gtag.js) - Google Analytics