oracle单行函数、聚合函数汇总

oracle数据库系统中定义了许多的函数(预定义),这些函数能够完成特有的数据操作功能,执行效率更高并重复使用。预定义函数按照操作执行特征可以分为:单行函数(对每个记录执行一次)、聚合函数(对多个记录执行一次),以下是具体的使用示例:

1、单行函数

1.1字符串函数

(1)substr(source, start,[length]):提取子串

SELECT substr('hjiouhuguih', 2, 3) FROM dual;----------jio

SELECT substr(NAME, 1, 2) FROM emp;------------取表中列的子串

(2)instr(source, target,[start],[rank]):查询子串的位置

SELECT instr('中国人是一个很大的国家', '一个', 2, 1) FROM dual;

(3)trim(source):去除空格

SELECT TRIM('   ser ') FROM dual;

SELECT lTRIM('   ser   ') FROM dual;

SELECT rTRIM('   ser   ') FROM dual;

(4)lpad(source, length, prefix):左补齐位数(右补齐为rpad(source, length, prefix))

SELECT lpad('23',10,'A') FROM dual;

(5)lower(source)、upper(source):大小写转换

SELECT lower('GOjgTDmgL') FROM dual;

SELECT upper('hoihhii') FROM dual;

(6)initcap(source)首字母变大写

SELECT initcap('mgL') FROM dual;

(6)length(source)获取长度

SELECT length('ihHgDFmIKmgL') FROM dual;

(7)字符串连接

SELECT '我是一个'||'成年人' FROM dual;

SELECT concat('我爱你', '中国') FROM dual;

1.2日期时间函数

(1)to_date(dateStr,format)将给定的字符串日期按照fomat格式转换为Date类型格式

SELECT to_date('1999-9-9 18:18:18', 'yyyy-MM-dd hh24:mi:ss') FROM dual;-----------1999/9/9 18:18:18

(2)to_timestamp(dateStr,format)将给定的字符串日期按照fomat格式转换为timestamp类型格式

SELECT to_timestamp('1999-9-9 18:18:18 4554611', 'yyyy-MM-dd hh24:mi:ss ff') FROM dual;

(3)add_months(date,increment)在date的基础上增加月份,增量可为负数

SELECT add_months(SYSDATE,1) FROM dual;----------从8月28日变为2019/9/28 17:15:59

(4)last_day()目标日期的最后一天

SELECT last_day(to_date('2015-2-8', 'yyyy-MM-dd')) FROM dual;----------2015/2/28

(5)months_between()两个月份的差

SELECT months_between(to_date('2015-2-8', 'yyyy-MM-dd'), to_date('2015-6-1', 'yyyy-MM-dd')) FROM dual;------3.7741935483871

(6)获取当前系统日期的字符串形式

SELECT current_date FROM dual;-----------2019/8/28 17:25:30
SELECT current_timestamp FROM dual;---28-8月 -19 05.25.30.605000 下午 +08:00

(7)to_char()

SELECT to_char(current_timestamp, 'yyyy/MM/dd hh24:mi:ss.ff5') FROM dual;------2019/08/28 17:32:58.13800
SELECT to_char(systimestamp, 'yyyy/MM/dd hh24:mi:ss.ff4') FROM dual;------2019/08/28 17:32:58.1740

(8)extract(year/month/day/hour/minute/second from date)从日期中提取相应时间部分

SELECT extract(YEAR FROM saldate) FROM sales WHERE ID = 5;---------2018

1.3数学计算函数(应保证操作的数据为数值类型或者内容为数字的字符串)

(1)abs(source)绝对值

SELECT abs(5.66) FROM dual;------------------5.66
SELECT abs(-5.66) FROM dual;-----------------5.66
SELECT abs('5.66') FROM dual;-----------------5.66
SELECT abs('-5.66') FROM dual;----------------5.66
SELECT abs('-5.66f') FROM dual;---------------报错(ora-01722,内容不是数字)

(2)round(source,[decimalLen])对给定的小数点及数值进行相关的四舍五入

SELECT round(45.9235) FROM dual;-----------46,默认舍去小数位
SELECT round(45.9235,3) FROM dual;---------45.924,四舍五入保留三位小数并
SELECT round(45.9235,-1) FROM dual;--------50,将整数部分最低位四舍五入

(3)ceil(number)向上取整

SELECT ceil(51.2) FROM dual;------------52
SELECT ceil(-51.2) FROM dual;-----------(-51)

(4)floor(number)向下取整

SELECT floor(51.2) FROM dual;--------------51
SELECT floor(-51.2) FROM dual;-------------(-52)

(5)sign(number)大于0结果为1,小于0结果为-1,等于0结果为0

SELECT sign(-51.2) FROM dual;-----------(-1)
SELECT sign(51.2) FROM dual;-------------1
SELECT sign(0) FROM dual;-----------------(0)

(6)sqrt(number)数值的平方根

SELECT round(sqrt(2),3) FROM dual;-----------1.414

(7)power(number,time)数值的乘方根

SELECT power(6,3) FROM dual;------------216

(8)trunc(number,time)按位数截取,不四舍五入

SELECT trunc(3.1415926,4) FROM dual;----------3.1415

(9)to_number(source)将字符串类型转换为值类型

SELECT to_number('3.1415') FROM dual;--------结果为3.1415的浮点常量
SELECT to_number('3.141500') FROM dual;------结果为3.1415的浮点常量
SELECT to_number('3.1415M') FROM dual;--------无效数字

1.4其它特殊函数

(1)ascii(number|String)返回给定数值或者字符串的首字母的ascii数字值

SELECT ascii('6') FROM dual;-----------54
SELECT ascii('A') FROM dual;-----------65

(2)chr(number|String)返回给定数值的字母形式

SELECT chr('65') FROM dual;------------A

(3)nvl(obj1,obj2)如果第一个值为null则返回第二个,否则返回第一个

SELECT nvl(NULL,'aaa') FROM dual;
SELECT nvl('ggg','aaa') FROM dual;

(4)nvl2(target,obj1,obj2)如果target为null则返回第二个,否则返回第一个

SELECT nvl2(NULL,'ggg','aaa') FROM dual;---------------aaa

(5)mod(m/n)取余

a、如果n为0,则结果为m

oracle单行函数、聚合函数汇总_第1张图片

b、该函数的返回结果与除数符号相同

oracle单行函数、聚合函数汇总_第2张图片

oracle单行函数、聚合函数汇总_第3张图片

2、聚合函数(因为返回结果,所以必须出现在查询中)

(1)count(arg)统计给定参数不为空的记录、max()、min()、sum()、avg()

SELECT COUNT(comm) FROM emp;(空的记录被忽略了)

SELECT COUNT(empno) 统计条数, MAX(sal) 最高薪水, MIN(sal)最低薪水, AVG(sal) 平均薪水, sum(sal) 总薪水  FROM emp;

(2)分组聚合统计(group by(通常连接列) 、having(对分组的列进行限制))

SELECT deptno, SUM(sal) 各部门薪水之和 FROM emp GROUP BY deptno HAVING deptno <> 10;

只有参与分组的列和聚合函数才可以出现在查询语句中。

 

你可能感兴趣的:(oracle,新手)