日期:2014-05-16  浏览次数:20382 次

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)