1、to_date()
用于将各种格式的字符串,转换为各种格式的日期
TO_DATE(#{date},'yyyy.MM.dd HH24:mi:ss')
2、to_char()
将数值型或者日期型转化为字符型
to_char(日期字段,'yyyy.MM.dd HH24:MI:SS') to_char(日期字段,'yyyy.MM.dd,HH24:MI:SS') to_char(日期字段,'yyyy.MM.dd HH12:MI:SS')
3、nvl(string1, replace_with)
如果string1 为null,那么nvl()函数返回replace_with的值,否则返回sting1的值。
注意:sting1和replace_with必须是同一数据类型,可以使用to_char函数进行转换。参数可以写select语句
4、nvl2(E1, E2, E3)
如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。
5、decode
decode(字段或字段的运算, 值1, 返回值1, 值2, 返回值2,... 值n, 返回值n,缺省值)
当字段或字段的运算的值等于值1时,该函数返回值1,等于值2时,返回值2...,前面的值都不等于则返回缺省值
6、partition by 分组排序
Parttion by 关键字是Oracle中分析性函数的一部分,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的结果。
①、row_number() over()
row_number()over(partition by col1 order by col2)
表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。
与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码。row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开始排序)。
②、rank() over()
rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)
③、dense_rank() over()
dense_rank()也是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的。
eg:查询每个部门工资最高的雇员的信息
select e.ename, e.job, e.sal, e.deptno
from (select e.ename
e.job,
e.sal,
e.deptno,
rank() over(partition by e.deptno order by e.sal desc) rank
from scott.emp e) e
where e.rank = 1;
7、start with... connect by...递归查询(树)
1 select … from tablename 2 start with 条件1 3 connect by 条件2 4 where 条件3;
条件1:根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
条件2:连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR org_id = parent_id;就是说上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录。
条件3:过滤条件,用于对返回的所有记录进行过滤
8、concat字符串拼接
concat(str1, str2)
9、截取字符串
格式1:substr(string string, int a, int b);
string:需截取的字符串
a:截取的开始位置,(0,1都表示为第一个元素)
b:要截取的字符串长度
格式2:substr(string string, int a);
string:需截取的字符串
a :从第a个元素到最后一个元素.
注:字符从1开始编号
10、instr()字符查找
1、instr()函数的格式 (俗称:字符查找函数)
格式一:instr( string1, string2 ) // instr(源字符串, 目标字符串)
返回出现的位置
1 select instr('helloworld','l') from dual; --返回结果:3 默认第一次出现“l”的位置
2 select instr('helloworld','lo') from dual; --返回结果:4 即“lo”同时出现,第一个字母“l”出现的位置
3 select instr('helloworld','wo') from dual; --返回结果:6 即“wo”同时出现,第一个字母“w”出现的位置
格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) // instr(源字符串, 目标字符串, 起始位置, 匹配序号)
解析:string2 的值要在string1中查找,是从start_position给出的数值(即:位置)开始在string1检索,检索第nth_appearance(几)次出现string2。
注:在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,也就是说从字符的开始到字符的结尾就结束。