oracle函数
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函数的更多相关文章
- oracle函数,游标,视图使用总结0.000000000000000000001
oracle函数或者叫存储过程,在实际的开发过程中对于复杂的业务需求是非常有用的,非常有效率的也是非常好玩儿的一个技术点. 平常在开发过程中对于CRUD功能较多.一般SQL即可应付,大不了就是长一点而 ...
- 【函数】Oracle函数系列(2)--数学函数及日期函数
[函数]Oracle函数系列(2)--数学函数及日期函数 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...
- oracle函数listagg的使用说明(分组后连接字段)
关于oracle函数listagg的使用说明 工作中经常遇到客户提出这样的需求,希望在汇总合并中,能够把日期逐个枚举出来. 如图,原始数据是这样的: 客户希望能够实现这样的汇总合并: 那么通常我会使用 ...
- 浅谈Oracle函数返回Table集合
在调用Oracle函数时为了让PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成.REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合 ...
- oracle学习笔记(三)oracle函数
--oracle 函数 --lower(char):将字符串转换为小写格式 --upper(char):将字符串转换为大写格式 --length(char):返回字符串的长度 --substr(cha ...
- oracle函数和存储过程有什么区别
oracle函数和存储过程有什么区别 1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 函数 ...
- Oracle函数sys_connect_by_path 详解
Oracle函数sys_connect_by_path 详解 语法:Oracle函数:sys_connect_by_path 主要用于树查询(层次查询) 以及 多列转行.其语法一般为: s ...
- 汉字转拼音的Oracle函数
前言: 最近处理一个特殊的问题,需要用到汉字自动转换拼音的功能. 解决: 在这里找了不少资料,都是有所缺陷,而且也好像很绕.其实是一个很简单的东东.后来还是自己写了一个函数获取.分享出来,给有需要的X ...
- oracle函数操作
感于总有些网友提出一些非常基础的问题,比如有没有实现某某功能的函数啊,某某函数是做什么用的啊,格式是什么等等,同时也感受到自己对oracle函数认识的不足,于是集中月余时间专注于oracle函数,小有 ...
- oracle函数,游标,视图使用总结
oracle函数或者叫存储过程,在实际的开发过程中对于复杂的业务需求是非常有用的,非常有效率的也是非常好玩儿的一个技术点. 平常在开发过程中对于CRUD功能较多.一般SQL即可应付,大不了就是长一点而 ...
随机推荐
- C# 给Word文档添加内容控件
C# 给Word文档添加内容控件 在MS Word中,我们可以通过内容控件来向word文档中插入预先定义好的模块,指定模块的内容格式(如图片.日期.列表或格式化的文本等),从而创建一个结构化的word ...
- 2016-Beijing-GDG-DevFest大会参后感
前话 15年初的时候参加过一次GDG线下举办的一次分享会,因为当时是实习的公司提供的活动场地.有了那次机会后,就一直关注了GDG的活动. 参加的目的最重要的是本次大会是比较盛大的一场技术大会,在经过一 ...
- 使用代码向一个普通的类注入Spring的实例
转载请在页首注明作者与原文地址 一:应用场景 什么是普通的类,就是没有@Controller,@Service,@Repository,@Component等注解修饰的类,同时xml文件中,也没有相应 ...
- javascript权威指南笔记
最近每天工作之余看下js的细节部分,时间不是很多,所以看的进度也不会太快,写个博客监督自己每天都看下. 以前不知道的细节或者以前知道但是没注意过的地方都会记录下来,所以适合有一定基础的,不适合零基础新 ...
- CloudNotes之桌面客户端篇:插件系统的实现
[CloudNotes版本更新历史与各版本下载地址请点击此处] [CloudNotes中文系列文章汇总列表请点击此处] [查看CloudNotes源代码请点击此处] 有时候,同一个名词,针对不同的人群 ...
- Node基础篇(模块和NPM)
核心模块 核心模块的意义 如果只是在服务器运行JavaScript代码,意义并不大,因为无法实现任何功能(读写文件,访问网络). Node 的用处在于它本身还提供的一系列功能模块,用于与操作系统互动. ...
- 阿里巴巴最新开源项目 - [HandyJSON] 在Swift中优雅地处理JSON
项目名称:HandyJSON 项目地址:https://github.com/alibaba/handyjson 背景 JSON是移动端开发常用的应用层数据交换协议.最常见的场景便是,客户端向服务端发 ...
- 浅玩JavaScript的数据类型判断
前言 平常在需要进行类型判断时,随手拿起typeof就像手枪一样只管突突突...也没有仔细的去了解它的具体特性. 所以这里就利用空闲时间,来做一个较为详细的了解. 首先我们来全面看一遍typeof类型 ...
- JAVA Thread线程异常监控
一.场景描述:单线程程序可以用try...catch捕获程序的异常,而在多线程程序的时候是无法使用try...catch捕获. 示例1:多线程发生异常,无法使用try...catch捕获问题 publ ...
- ASP.NET MVC搭建项目后台UI框架—1、后台主框架
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...