Oracle 函数

一、分页查询
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。

原文地址:https://www.cnblogs.com/echola/p/9535245.html