一个伪列看起来像是一个表中的列,但实际上并不保存在表中。你可以查询, 但是不能插入,修改和删除其中的值。一个伪列也类似于一个没有参数的函 数。但是在典型情况下,在结果集中可以为每一行返回相同的值,而伪列通 常为每一行返回不同的值。
ROWNUM伪列为每个查询返回的行提供一个值,这个值反映了表查询或者 连接的行出现的先后顺序。查到的第一行rownum为1,第二行为2 以此类推.
如果ROWNUM与Order By子句同时出现相同的查询中,则行将被ORDER BY 子 句重新排序。结果的变化取决于访问数据的方式。
例如如果ORDER BY子句促使Oracle 使用索引来访问数据,Oracle取回数据的 顺序将于不用索引不同。因此后面的语句返回的结果将于上一个查询不同
查询展现工资处
于第6到第10位的员工信息
select * from (select rownum rn, from ( select * from scott. emp e order by sal desc) e)where rn 6 and 10
利用ROWNUM
进行字符串拆分
将’a,BB,dd,aaa’ 拆分成四行 结果为:
a
BB
dd
aaa
select substr( ','|| 'a,BB,dd,aaa'|| ' , ' , instr(','||'a,BB,dd,aaa'||',', ',', 1, rownum) + 1, instr(','||'a,BB,dd,aaa'||',', ',', 1, rownum+1) - instr(','||'a,BB,dd,aaa'|| ',',',', 1, rownum) - 1 ) from dict where rownum <=length('a,BB,dd,aaa') - length (replace('a,BB,dd,aaa', ',')) +1 ;
利用ROWNUM解决
断层问题