`
qnzhl
  • 浏览: 29657 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle 常用函数总结

阅读更多

oracle的执行顺序: from --> where --->group by ---> having --->select -->order by

字符串函数:

userenv('language')查看oracle字符集

upper(字段名):转换成大写

lower(字段名):转换成小写

substr(字段名,初始位置,[结束位置]) :字段截取函数(中文算一个长度),若想字节截取用substrb

lpad(字段名,length,[char]):字段长度若不大于length,则在字段值左边补char,若省略则补空格

lpad(字段名,length,[char]):字段长度若不大于length,则在字段值右边边补char,若省略则补空格

instr(str,char,[index],[index1]):查找字符串str中位置index后的字符匹配char字符index1次的位置

length(字段名) :取字段长度,中文字符也算一个长度。

lengthb(字段名) :取字段长度,中文字符也算两个长度。

trim(字段名):去前后空格

ltrim(字段名):去前空格

rtrim(字段名):去后空格

lpad(字段名,length):字段长度若不大于length,则在字段值左边补空格

lpad(字段名,length):字段长度若不大于length,则在字段值右边补空格



数值函数:

round(n[,保留位]):对n四舍五入到保留位
trunc(n[,保留闰]):对n截取到保留位


日期函数:

to_date('2015-01-01 00:01:01','yyyy-mm-dd hh24:mi:ss') 把字符串转换成时间类型(hh 是12小时制,也可用HH或HH24)

to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') 把时间转换成字段串类型

extract(year或month或day或hour或minute或second  from 日期):获取日期的指定部分

last_day(日期):当月份的最后一天

next_day(日期,n):获取下个星期第n天的日期,若n为3,则取的是下周二的日期

months_between(日期,日期):取两个时间之间的月份差

round(日期[,yyyy || mm]):对指定时间段进行四舍五入,如不指定后面的参数则取下一天

trunc(日期[,yyyy || mm]):对指定时间段进行截取,如不指定后面的参数则舍去时分秒



空值处理函数:

nvl(字段,res1):如字段是null则返回res1

nvl2(字段,res1,res2):如字段有值则返回res1,无值则返回res2



聚合函数:

count(字段名或*或1),min(字段名),max(字段名),num(字段名),avg(字段名):聚合函数,where条件后需要有group by (字段名),若没有则全表查询



条件判断函数:

decode(表达式,值1,结果1,值2,结果2....默认结果)(oracle独有)表达式为固定值:
例:select dept_id,sum(decode(sex,'F',1,0)) F,sum(decode(sex,'M',1,0)) M from company group by dept_id;---统计各部门男女人数据

case when 表达式1 then  值1  when 表达式2 then 值2  .... else  值3 end :
例:select a.qujian,count(*) from (select (case when sal<1000 then '0-1000'
                when sal<2000 then '1000-2000'
                when sal<5000 then '2000-5000'
                 else '5000以上'  end) qujian from emp_zh a) group by qujian;
                
                

集合函数:将结果集进行合并,交集或差集

union:将结果集合并,不允许放重复集 A union B

union all:将结果集合并,允许放重复集 A union all B

intersect:将两结果集相同记录取出 A intersect B

minus:将两结果集不同记录取出,取差集
例:A(1,3,5,7,9),B(3,5,6,7,8):A minus B 则是1,9;  B minus A 则是6,8



排序函数:
rownum:伪列编号
row_number以组为单位编号

row_number() over(partition by 分组字段 order by 排序字段):将查询结果按分组字段划分成各个小组,
之后将组内数据排序(序号是顺序)。最后追加row_number()组内序号列
例:select * from (select empno,job,ename,deptno,sal,row_number() over(partition by job order by sal desc) rn from emp_zh) where rn<2
//查询每个职位工资最高的员工
select empno,ename,deptno,sal,row_number() over(partition by deptno order by sal) rn
from emp_zh )  where rn<2; //查询每个部门工资最高的员工

rank() over(partition by 分组字段 order by 排序字段):
与row_number的区别是条件相同的记录序号也相同,会跳号 1,2,2,4

dense_rank() over(partition by 分组字段 order by 排序字段):
与rank()不同的是重复记录序号是连续的


高级分组函数:

在使用group by字句时可使用下列高级分组函数,实现小计和总计的功能

rollup(字段):增加总计
例:select nvl(job,'总计'),sum(sal) from emp_zh group by rollup(job);---每个职位小计总工资及(多出一行)全公司总计总工资
   select deptno,nvl(job,'总计'),sum(sal) from emp_zh where deptno is not null group by rollup(deptno,job) order by deptno,job
   ---分组统计小计和总公司总计
  
cube()函数:单个字段时和rollup()效果一样,多个字段进会分别进行小计
例:select nvl(job,'合计'),sum(sal) from emp_zh group by cube(job);
    select deptno,nvl(job,'合计'),sum(sal)from emp_zh group by cube(deptno,job) order by deptno,job;
   
grouping sets():
grouping sets(字段1,字段2) 提取按字段1和字段2计算的小计记录,但没有总合计 (指定两个字段,一个字段没效果)
  select deptno,nvl(job,'合计'),sum(sal)from emp_zh group by grouping sets(deptno,job) order by deptno,job;








                



分享到:
评论

相关推荐

    oracle常用函数总结

    以下是对标题和描述中提到的Oracle常用函数的详细总结: 1. ASCII 函数:这个函数返回一个字符对应的ASCII码,即十进制数字。例如,`ASCII('A')`返回65,`ASCII(' ')`返回32(空格的ASCII码)。 2. CHR 函数:与...

    oracle常用函数总结下载

    oracle常用函数总结下载 oracle常用函数总结下载 oracle常用函数总结下载

    ORACLE常用函数总结

    ### ORACLE常用函数总结 在Oracle数据库中,各种内置函数为数据处理提供了强大的支持。本文将根据提供的部分内容,详细介绍部分常用的Oracle函数,并解释其功能及用法。 #### 1. ASCII ASCII函数用于返回给定字符...

    ORACLE常用函数总结(含与SQL SERVER比较)

    ORACLE常用函数总结,与SQL SERVER对比,防止混淆,更容易记忆。

    110个oracle常用函数总结

    110个oracle常用函数总结.TXT 精彩不容错过

    Oracle常用函数总结

    以下是一些常用的日期函数: 1. `months_between(date1, date2)`:此函数计算两个日期之间相差的月份数,结果可能是小数或负数。例如,`months_between('01-sep-95', '11-jan-94')` 返回约 1.9774194个月。 2. `...

    80个oracle常用函数总结

    以上仅是Oracle数据库中80个常用函数的一部分,实际使用中还有许多其他功能强大的函数,如日期函数、数学函数、转换函数等,它们极大地丰富了数据处理的能力,提高了数据库操作的灵活性和效率。在实际工作中,理解并...

    ORACLE 常用函数总结(80个)第1/2页

    以下是一些Oracle常用函数的详细说明: 1. ASCII函数:此函数返回给定字符的ASCII码,即该字符对应的十进制数字。例如,ASCII('A')返回65,ASCII(' ')返回32。 2. CHR函数:它接受一个整数并返回相应的字符。例如...

Global site tag (gtag.js) - Google Analytics