oracle函数

 

单行函数

                 Function  name(column | expression,[arg0,arg1,arg2….])

 

 

单行函数的分类:

       字符函数:接受字符串的输入并返回字符串的值

       数值函数:接受数值的输入并返回数值

       日期函数:对日期数据进行操作

       转换函数:从一种数据类型转换成另一种类型

       通用函数:NVL,DECODE

 

 

字符函数:专门处理字符的,例如可以将大写字符改为小写,还可以求出字符的长度

UPPER        ------ 把字符串转换成大写

LOWER       ------ 把字符串转换成小写

例子:

       select UPPER(‘aaa’)  from DUAL

       如:我们要查询名字为smith的员工,不区分大小写

       select * from emp  where  LOWER(ename)=LOWER(‘SMITH’)

      

       INITCAP              -------  将单词的第一个字符转换成大写,其余的变成小写

       例:select  INITCAP(HELLO WORLD)  from DUAL  返回Hello World

       CONCAT      -------  字符串连接函数

       例:select  CONCAT (HELLO,WORLD)  from DUAL  返回HELLOWORLD

       这种可以连接字符串,但是肯定不如“||”好使

       substr()   字符串截取 ,三个参数,第一个为被截取的字符串,第二个指定开始截取的位置,第三个位截取的长度

       length()   求字符串长度

       replace()  字符串替换 

       例:select substr('hello',1,3),length('hello'),replace('hello','l','x')  from DUAL

      

       数值函数:

      ROUND()      四舍五入

       TRUNC()        截取小数位

       MOD()            取余

       ROUND 示例:

取整 :select round(’19.567’)  from dual

       保留两位小数:select round(’19.567’,2)  from dual

       对整数四舍五入:select round(’193478.567’,-2)  from dual 返回193500

      

       TRUNC:直接取整,不进行四舍五入

              select trunc(’19.567’)  from dual  结果为19

 

 

       MOD :两个参数,第一个为被除数,第二个为除数,结果为余数

       例:MOD(10,3)

      

       日期函数

在oracle存在很多日期函数,可以对日期进行操作,比如说加减日期等,但是在加减的时候存在一些规律

 日期+数字 = 日期 

 日期-数字  = 日期 

 日期-日期= 数字(天数)

例:求当前日期,用sysdate

 

select sysdate  from dual

      

例:现在要显示10部门员工入职的星期数

 

select ename  ,round((sysdate-hiredate)/7)  from emp;

 

常用的日期函数包括:

       MONTHS_BETWEEN                    求出给出日期范围的月数

ADD_ MONTHS                                      在日期上加上指定的月数,求出之后的日期

       NEXT_DAY                                             下一个星期几是什么日期

       LAST_DAY                                             求出给定日期当月最后一天日期

      

 

              MONTHS_BETWEEN 例:

                     select empno,ename,MONTHS_BETWEEN(hiredate,sysdate)  from emp;

             

              ADD_ MONTHS  例:

                     selectADD_ MONTHS(sysdate,4)  from dual;

             

              NEXT_DAY 例

                     selectNEXT_DAY (sysdate,1)  from dual; // 第二个参数为1-7的数字,1代表星期日,以此类推。

 

             

              LAST_DAY 例

                    

                     selectLAST_DAY (sysdate)  from dual;

             

             

 转换函数

           TO_CHAR       转换成字符串

           TO_NUMBER   转换成数字

           TO_DATE        转换成日期

           比如说现在需要拆分日期中的年月日,分别求出年月日得字符,拆分的时候必须使用通配符:

l  年:yyyy 

l  月:MM

l  日:DD

TO_CHAR示例:

      select ename,to_char(hiredate,'yyyy')  year,

                            to_char(hiredate,'mm')  month,

                            to_char(hiredate,'dd')  day

from emp;

比如打印中国喜欢的日期格式

select ename,to_char(hiredate,'yyyy-mm-dd')  hiredate   from emp;

在显示中如果出现的月份带有前导,可以用fm去掉前导,比如05月,那个0就是月份的前导

select ename,to_char(hiredate,'fmyyyy-mm-dd')  hiredate   from emp;

TO_CHAR既可以格式化日期,还可以格式数字

           中国人看到太长的数字喜欢加上‘,’进行分割,可以用to_char实现,9表示一位数字

比如:

      select to_char(sal,'99,999')  from emp;

如果希望数字可以明确的表示区域,可以使用以下两种符号:

      $:表示美元

      L:代表local的缩写,以本地语言为准

select to_char(sal,'$99,999')  from emp;

TO_NUMBER示例:

比如把字符串变成数字进行相加

      select  to_number(‘123’)+to_number(‘234’)  from dual

 

TO_DATE  示例,只要用于把字符串转换成日期

           如:

           select to_date(‘2009-10-10’,’yyyy-mm-dd’)  from dual;

通用函数:

              NVL :如果值为空,可以把一个null指定成一个固定值

                  如:select nvl(null,0)  from dual

           如果我们要查询员工的奖金

           select ename,nvl(comm,0)  from emp;

DECODE有点跟SQL中的case语句作用相似

            语法:

           decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)

         要求,查询员工表的职位,以中文形式显示

         CLERK :(办事员)

         SALESMAN:(财务)

         MANAGER :(经理)

         ANALYST:(分析员)

组函数:

              常见的组函数有如下几个:

  COUNT(): 求记录条数

  MAX():求最大值

  MIN():求最小值

  AVG():求平均值

  SUM():求和

分析函数:FUNCTION_NAME(<argument>,<argument>...) OVER  (<Partition-Clause><Order-by-Clause><Windowing Clause>)

例:
sum(sal) over (partition by deptno order by ename) new_alias
sum就是函数名
(sal)是分析函数的参数,每个函数有0~3个参数,参数可以是表达式,例如:sum(sal+comm)
over 是一个关键字,用于标识分析函数,否则查询分析器不能区别sum()聚集函数和sum()分析函数
partition by deptno 是可选的分区子句,如果不存在任何分区子句,则全部的结果集可看作一个单一的大区
order by ename 是可选的order by 子句,有些函数需要它,有些则不需要.依靠已排序数据的那些函数,如:用于访问结果集中前一行和后一行的LAG和LEAD,必须使用,其它函数,如AVG,则不需要.在使用了任何排序的开窗函数时,该子句是强制性的,它指定了在计算分析函数时一组内的数据是如何排序的.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值