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.value(1,100)随机产生1到100之间的数。
2.trunc() 是一个格式化函数,可以格式化日期和number两种数据。
1> trunc(for dates)
具体的语法格式:TRUNC(date[,fmt]),date:一个日期格式;fmt:日期格式,该日期将由指定的元素格式所截去。缺省的时候,截取的是当前天。
trunc(sysdate) --返回今天.
trunc(sysdate,'yyyy') --返回当年第一.
trunc(sysdate,'mm') --返回当月第一天.
trunc(sysdate,'d') --返回当前星期的第一天.
trunc(sysdate,'dd')--返回当前年月日
2>trunc(for number)
TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
直接上例子:
TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80
注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。
3.connect by
1>Oracle “CONNECT BY”是层次查询子句,一般用于树状或者层次结果集的查询。
eg:select 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生成序列(上例就用了这个功能)
eg:SELECT ROWNUM FROM
DUAL CONNECT
BY
ROWNUM <= 10;
3>通过CONNECT BY用于十六进度转换为十进制