Oracle 随机获取记录

           1. Oracle 随机获取10条记录

            select * from (select * from table order by dbms_random.value ) where rownum <11

Oracle 随机获取10条记录:

select tt.*
from (select rownum rn, t.* from table1 t
) tt
where tt.rn in
(select trunc(dbms_random.value(1, (select count(*) from table1 )))
from dual
connect by rownum <= 10); ----
这里是最多取10

关键点:

1.dbms_random.value()是随机产生( 0,1 )之间的数。dbms_random.value1,100)随机产生1100之间的数。

2.trunc() 是一个格式化函数,可以格式化日期和number两种数据。

1> trunc(for dates)

具体的语法格式:TRUNCdate[,fmt]),date:一个日期格式;fmt:日期格式,该日期将由指定的元素格式所截去。缺省的时候,截取的是当前天。

trunc(sysdate) --返回今天.
trunc(sysdate,'yyyy') --
返回当年第一.
trunc(sysdate,'mm') --
返回当月第一天.
trunc(sysdate,'d') --
返回当前星期的第一天.
trunc(sysdate,'dd')--
返回当前年月日

2>trunc(for number)

TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。

直接上例子:

TRUNC89.9852=89.98
TRUNC
89.985=89
TRUNC
89.985-1=80
注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。

3.connect by

1>Oracle “CONNECT BY”是层次查询子句,一般用于树状或者层次结果集的查询。

egselect rpad(' ',(level-1)*4)||a.resrc_name from sys_menu a connect by prior menu_id=parent_id start with a.parent_id='0' --查询菜单层级关系。以0为根节点,一次展开往下的叶子节点。 level 伪列表示节点深度

2>通过CONNECT BY生成序列(上例就用了这个功能)

egSELECT ROWNUM FROM DUAL CONNECT BY ROWNUM <= 10;

3>通过CONNECT BY用于十六进度转换为十进制

猜你喜欢

转载自cn-legend.iteye.com/blog/1345418
今日推荐