oracle中函数分为3大类,分别为:单行函数,分组函数,分析函数。

1.单行函数

单行函数同时只能对一行进行操作,且对输入的每一行返回一行输出结果。

单行函数还分为:字符函数,数子函数,日期函数,转换函数,其他函数。

1.1.字符函数

字符函数是oracle中广泛使用的函数,对字符数据类型进行操作,操作结果可能是字符数据类型,也可能是数字类型。

1.1.1

INITCAP(char)

说明: 首字母大写

实例

输入:select INITCAP('hello') from dual

输出: Hello

1.1.2

LOWER(char)

说明: 转换为小写

实例

输入:select LOWER('ABC')  from dual

输出: abc

1.1.3

UPPER(char)

说明: 转换为大写

实例

输入:select  UPPER('abc')  from dual

输出: ABC

1.1.4

LTRIM(char,set)

说明: 左裁剪

实例

输入:select  LTRIM('zxcvbnmloiju','zxc')  from dual

输出: vbnmloiju

1.1.5

RTRIM(char,set)

说明: 右裁剪

实例

输入:select  RTRIM('zxcvbnmloiju','iju')  from dual

输出: zxcvbnmlo

1.1.6

TRANSLATE(char,from,to)

说明: 按字符翻译

实例

输入:select  TRANSLATE('jack','abcd','1234')  from dual

输出: j13k

1.1.7

TRANSLATE(char,from,to)

说明: 按字符翻译

实例

输入:select  TRANSLATE('jack','abcd','1234')  from dual

输出: j13k

1.1.8

REPLACE(char,search_str,replace_str)

说明: 字符串替换

实例

输入:select  REPLACE('jack and jue','j','bl')  from dual

输出: black and blue

1.1.9

INSTR(char,substr[,pos])

说明: 查找字符串位置

实例

输入:select  INSTR('asdfgghjjkkklsfsf','g') from dual

输出: 5

1.1.10

SUBSTR(char,pos,len)

说明:截取字符串

实例

输入:select SUBSTR('safgdgd',3,2) from dual

输出: fg

1.1.11

CONCAT(char1,char2)

说明:连接字符串

实例

输入:select CONCAT('asd','zxc') from dual

输出: asdzxc

1.2 数字函数

数字函数接受数字输入并返回数字作为输出结果。

1.2.1

ABS(n)

说明:取绝对值

实例

输入:select ABS(-10) from dual

输出: 10

1.2.2

CEIL(n)

说明:向上取整

实例

输入:select CEIL(15.1) from dual

输出: 16

1.2.3

SIGN(n)

说明:取符号

实例

输入:select SIGN(-15) from dual

输出: -1

1.2.4

FLOOR(n)

说明:向下取整

实例

输入:select  FLOOR(100.52) from dual

输出: 100

1.2.5

ROUND(m,n)

说明:向下取整

实例

输入:select  ROUND(100.52735,2) from dual

输出: 100.53

1.3日期函数

日期函数对日期值进行运算,根据函数的用途产生日期数据类型或数值类型的结果。

1.3.1

SYSDATE

说明:返回当前日期

实例

输入:select  SYSDATE from dual

输出: 2017/1/7 16:32:32

1.3.2

MONTHS_BETWEEN

说明:返回两个日期间的月份

实例

输入:select  MONTHS_BETWEEN('04-11月-05','11-1月-01') from dual

输出: 57.7741935483871

1.3.3

ADD_MONTHS

说明:返回把月份数加到日期上的新日期

实例

输入:select ADD_MONTHS('06-2月-03',1) from dual

输出: 2003/3/6

1.3.4

ROUND

说明:返回把月份数加到日期上的新日期

实例

输入:select ROUND(to_date('13-2月-03'),'YEAR') from dual

输出: 2003/1/1

1.4 转换函数

将值从一种数据类型转换为另一种数据类型

1.4.1

TO_CHAR

说明:返回把月份数加到日期上的新日期

实例

输入:select TO_CHAR(1234.5,'$9999.9') from dual

输出:  $1234.5

1.4.2

TO_DATE

说明:转换成日期类型

实例

输入:select TO_DATE('1980-01-01','yyyy-mm-dd') from dual

输出: 1980/1/1

1.4.3

TO_NUMBER

说明:转换成日期类型

实例

输入:select TO_DATE('1980-01-01','yyyy-mm-dd') from dual

输出: 1980/1/1

1.5其他函数

NVL(exp1,exp2):如果exp1的值为null,则返回exp2的值,否则返回exp1的值

NVL(exp1,exp2,exp3):如果exp1的值为null,则返回exp2的值,否则返回exp3的值

DECODE(value,if1,then1,if2,then2,....else):如果value的值为if1,则返回then1的值;如果value的值为if2,则返回then2的值,...,否则返回else的值

2.分析函数

语法

函数名([参数] over([分区子句] [排序子句]))

在语法中:

1.函数名表示分析函数的名称

2.参数表示函数需要传入的参数

3.分区子句(PARTITION BY)表示将查询结果分为不同的组,功能类似于GROUP BY 语句,是分析函数工作的基础。默认将所有结果作为一个分组。

1.ROW_NUMBER

  ROW_NUMBER函数返回一个唯一的值,当遇到相同数据时,排名按照记录集中记录顺序依次递增。

2.DENSE_RANK

  DENSE_RANK函数返回一个唯一的值,当遇到相同的数据时,所有相同数据的排名都是一样的。

3.RANK

  RANK函数返回一个唯一的值,当遇到相同的数据时,所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。

3.分组函数

  • 1.分组函数作用于一组数据,并对一组数据返回一个值
  • 2.组函数类型:
  • avg 平均值
  • count
  • max
  • min
  • stddev
  • sum
  • 二 代码
  • 1. 工资最高的:SQL> select max(sal) from emp;
  • 工资最低的:SQL> select min(sal) from emp;
  • 平均工资:SQL> select avg(sal) from emp;
  • 工资总数:SQL> select sum(sal) from emp;
  • 记录总数:SQL> select count(emptno) from emp; 返回的是不为空的记录
  • SQL> select count(distinct emptno) from emp;
  • 返回的是非空且不重复的记录总数 distinct是去掉重复的
  • 也可以写为:
  • SQL> select min(sal),max(sal),min(sal) from emp;
  • 结果为:
  • MIN(SAL) MAX(SAL) MIN(SAL)
  • ---------- ---------- ----------
  • 800 5000 800
  • 注:(1)可以对数值型数据使用AVG 和 SUM 函数。
  • (2)可以对任意数据类型的数据使用 MIN 和 MAX 函数。
  • 也可以对日期使用
  • SQL> select min(hiredate) from emp;
  • SQL> select max(hiredate) from emp;
  • 2.分组数据
  • group by子句使用
  • 例子:查询出employees中各部门的平均工资
  • SQL> select department_id,avg(salary) from employees group by department_id;
  • 包含在 GROUP BY 子句中的列不必包含在SELECT 列表中,所以可以写为:
  • SQL> select avg(salary) from employees group by department_id;
  • 可以进行多列的分组:
  • SQL> select department_id,job_id,sum(salary) from employees group by department_id,job_id;
  • 注:(1)不能在 where 子句中使用组函数(注意)。
  • (2)可以在 HAVING 子句中使用组函数。
  • 3.过滤分组 having子句
  • 例子:部门最高工资比 1000高的部门
  • SQL> select department_id,max(salary) from employees group by department_id having max(salary)>1000;
  • 每一个部门下有很多员工,通过对部门分组,把是一个部门员工分好在当前部门下,计算出最高的工资对比
  • 4.嵌套组函数
  • 例子:显示平均工资的最大值
  • SQL> select max(avg(salary)) from employees group by department_id;
 
 

oracle函数的更多相关文章

  1. oracle函数,游标,视图使用总结0.000000000000000000001

    oracle函数或者叫存储过程,在实际的开发过程中对于复杂的业务需求是非常有用的,非常有效率的也是非常好玩儿的一个技术点. 平常在开发过程中对于CRUD功能较多.一般SQL即可应付,大不了就是长一点而 ...

  2. 【函数】Oracle函数系列(2)--数学函数及日期函数

    [函数]Oracle函数系列(2)--数学函数及日期函数 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...

  3. oracle函数listagg的使用说明(分组后连接字段)

    关于oracle函数listagg的使用说明 工作中经常遇到客户提出这样的需求,希望在汇总合并中,能够把日期逐个枚举出来. 如图,原始数据是这样的: 客户希望能够实现这样的汇总合并: 那么通常我会使用 ...

  4. 浅谈Oracle函数返回Table集合

    在调用Oracle函数时为了让PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成.REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合 ...

  5. oracle学习笔记(三)oracle函数

    --oracle 函数 --lower(char):将字符串转换为小写格式 --upper(char):将字符串转换为大写格式 --length(char):返回字符串的长度 --substr(cha ...

  6. oracle函数和存储过程有什么区别

    oracle函数和存储过程有什么区别 1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 函数 ...

  7. Oracle函数sys_connect_by_path 详解

    Oracle函数sys_connect_by_path 详解 语法:Oracle函数:sys_connect_by_path 主要用于树查询(层次查询) 以及 多列转行.其语法一般为:       s ...

  8. 汉字转拼音的Oracle函数

    前言: 最近处理一个特殊的问题,需要用到汉字自动转换拼音的功能. 解决: 在这里找了不少资料,都是有所缺陷,而且也好像很绕.其实是一个很简单的东东.后来还是自己写了一个函数获取.分享出来,给有需要的X ...

  9. oracle函数操作

    感于总有些网友提出一些非常基础的问题,比如有没有实现某某功能的函数啊,某某函数是做什么用的啊,格式是什么等等,同时也感受到自己对oracle函数认识的不足,于是集中月余时间专注于oracle函数,小有 ...

  10. oracle函数,游标,视图使用总结

    oracle函数或者叫存储过程,在实际的开发过程中对于复杂的业务需求是非常有用的,非常有效率的也是非常好玩儿的一个技术点. 平常在开发过程中对于CRUD功能较多.一般SQL即可应付,大不了就是长一点而 ...

随机推荐

  1. linux内核调试技术之printk

    原创博客:欢迎转载,转载请注明出处https://i.cnblogs.com/EditPosts.aspx?postid=6218383 1.简介(基于s3c2440 linux) 在内核调试技术之中 ...

  2. DDD及相关概念

    领域:指一个具体的应用范围,比如电商.订票管理.会议管理等,实现某一领域的功能,与其对应的商业领域一致.譬如Contoso会议管理系统从两个方面来阐述(1)系统概览:销售会议座位.创建新会议[领域的活 ...

  3. 『.NET Core CLI工具文档』(二).NET Core 工具遥测(应用信息收集)

    说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Tools Telemetry 翻译:.NET Core 工具遥测(应用信息收集) .NET Cor ...

  4. asp.net创建事务的方法

    1.建立List用于存放多条语句 /// <summary> /// 保存表单 /// </summary> /// <param name="context& ...

  5. wpf 列表、菜单 收起与展开,通过Grid DoubleAnimation或者Expander实现

    菜单收缩有很多种方法具体如何实现还是看个人想法: 第一种通过后台控制收起与展开: 效果图: 代码 : <Grid> <Grid.ColumnDefinitions> <C ...

  6. IntelliJ IDEA使用(二):tomcat和jetty配置

    上一讲用idea创建了maven web项目,接下来我们把项目发布到tomcat和jetty运行,以便进一步地开发和调试 配置tomcat 第一.打开菜单栏 第二.点击设置按钮,添加应用服务器,选择t ...

  7. 设计模式之单例模式的简单demo

    /* * 设计模式之单例模式的简单demo */ class Single { /* * 创建一个本类对象. * 和get/set方法思想一样,类不能直接调用对象 * 所以用private限制权限 * ...

  8. 灵活的JavaScript(一)

    自己对JavaScript的原型,继承,闭包,多少也还是了解些,但是平时写的东西都挺简单的,也用不上,所以感觉提升不大.于是乎买了一本<JavaScript设计模式>来提高下自己,这本是百 ...

  9. htm常用标签总结

    1.结构性定义 文件类型 <HTML></HTML> (放在档案的开头与结尾) 文件主题 <TITLE></TITLE> (必须放在「文头」区块内) 文 ...

  10. Javascript高性能编程-提高javascript加载速度

        1.将所有<script>标签放在尽可能接近<body>标签底部的位置,以保证页面在脚本运行之前完成解析尽量减少对整个页面下载的影响     2.限制页面的<sc ...