一、分页查询
rownum 表示行号,实际上此是一个列,但是这个列是一个伪列,此列可以在每张表中出现。
rowid 表示每一列对应的十六进制物理地址值
通俗的讲:rowid是相对不变的,rownum会变化,尤其是使用order by的时候。
1 --;逻辑排序,从1开始,按顺序排序 2 select *,rownum from emp
1、查询最后一条消息
1 select * 2 denghufrom emp 3 where rowid =(select max(rowid) from emp )
2、删除最早最新的数据
1 delete from emp where empno in( 2 select empno from emp e where rewid!=( 3 select max(rowid) from emp where e.ename=ename and e.job=job 4 ))
3、查询第6到10的数据
第一种方法:
1 select rownum,rowid empno,ename,job 2 from emp 3 where rownum<=10 4 5 minus 6 7 select rownum,rowid empno,ename,job 8 from emp 9 where rownum<=5
第二种方法:
1 ----3、根据B表的rn字段,查询出>5的数据 2 select B.* from 3 ----2、根据B表 rownum取前十条数据 4 (select A.*,rownum rn from 5 ----1、查询表的内容起别名 6 (select * from emp) A 7 where rownum<=10) B 8 where B.rn>5
二、Oracle其他函数
1、NVL2
语法:NVL2 (expr1, expr2, expr3)
功能:9i新增,expr1不为NULL,返回expr2;expr1为NULL,返回expr3。expr1可以是任意数据类型;
expr2与expr3可以是除LONG外的任意数据类型,但需要类型一致或expr3可以隐式转换为expr2。
2、SUBSTR
语法: SUBSTR(string,a[,b])
功能:截取字符串,从第a个开始取b个字符,这个务必要注意,是字符。vachar2最长4000个字节,
GBK编码中一个中文字符占2个字节,韩文字符占4个字节,
如果string是date或者number的数据类型,会自动转化为varchar2。
3、TRANSLATE
语法: TRANSLATE(string,from_str,to_str)
功能: 将字符string按照from_str与to_str的对应规则进行处理,返回将所出现的from_str中的每个字符替换为to_str中的相应字符以后的string.
TRANSLATE是REPLACE所提供的功能的一个超集.如果from_str比to_str长,那么在from_str中而不在to_str中而外的字符将从string中被删除,
因为它们没有相应的替换字符. to_str不能为空.Oracle把空字符串认为是NULL,并且如果TRANSLATE中的任何参数为NULL,那么结果也是NULL.
3、 DECODE
语法:DECODE(base_expr,comparel,valuel,Compare2,value2,…default)
功能:把base_expr与后面的每个compare(n)进行比较,如果匹配返回相应的value (n).如果没有发生匹配,则返回default,
每个valuel数据类型必须一致,如果没有default则返回null。