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函数返回要截取的字符串在源字符串中的位置。只检索一次,也就是说从字符的开始到字符的结尾就结束。

文章链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: