oracle与很多内置函数,主要分为单行函数与集合函数。
首先要提一下dual表,它oracle的一个表,没有什么实质的东西,不能删除它,否则会造成Oracle无法启动等问题,他有很大用处,可以利用它查询很多它没有的字段
举个栗子:
select 30* 20 from dual;
单行函数:
数值型函数:
绝对值函数:abs()
select abs(-300) from dual;
取余函数;mod(n1,n2)返回n1除以n2的余数
select mod(2,3) from dual;
四舍五入截取函数: round(n,integer)如果integer不是整数,自动截取整数部分,如果是正整数,就截取n的四舍五入integer位小数,如果integer未负整数,n被四舍五入小数点向左integer位
select round(23456.4322,3) from dual;
select round(23456.4322,3.43) from dual;
结果同上
select round(23456.4322,3.53) from dual;
结果同上
select round(23456.4322,-4) from dual;
select round(23456.4322,-4.3) from dual;
结果同上
trunc(n,integer)也是截取函数
select trunc(23456.4322,-4) from dual;
字符型函数:
获取字符串长度:length()
select length('asdsdasdsdas') from dual;
字符串截取函数:substr(待截取字符串,从哪个位置开始截取,截取多少个字符) 注意下标从1开始,截取多少个字符如果没有说,就默认截取到最后一个字符
select substr('asdsdasdsdas',4,5) from dual;
select substr('asdsdasdsdas',4) from dual;
字母大小写转换函数:
upper()转换成大写字母 lower()转换成小写字母
select upper('wewe') from dual;
select lower('DFS') from dual;
替换字符串函数:
replace(待替换的字符串,要替换的字符串,替换成什么字符串)
select replace('明天是什么天气','什么天气','晴天') from dual;
删除字符串首位指定字符的函数:trim()默认删除空格
both是删除前后两边的的指定字符,leading是删除前边制定字符(左),trailing删除后边指定字符
select trim(leading '2' from '234334232'),trim(' test ') from dual;
select trim(trailing '2' from '234334232'),trim(' test ') from dual;
select trim(both '2' from '234334232'),trim(' test ') from dual;
ltrim()去除指定字符的左边所有字符,如果没有指定默认去除空格
select ltrim(' fsdsddcsd', 'sds') ,ltrim(' fsdsddcsd') from dual;
rtrim()与ltrim()相似
日期型函数:
sysdate系统日期
select sysdate from dual;
为日期加上指定月份函数:add_moths()
select add_months(sysdate,3) from dual;
返回指定月份最后一天函数:last_day()
select last_day(sysdate) from dual;
返回指定日期后一周的函数:next_day()
select next_day(sysdate,'星期二') from dual;
提取指定日期特定部分的函数:extract()
select extract(year from sysdate) from dual;
select extract(month from sysdate) from dual;
select extract(day from sysdate) from dual;
得到i两个日期之间的月份数:months_between()
select months_between(sysdate,to_date('1989-01-2','yyyy/mm/dd')) from dual;
数值转换成字符型函数:to_char()也可以将日期转换成字符型
select to_char(23.55,'99.9') from dual;
select to_char(sysdate,'yyyy-mm-dd') from dual;
字符转日期型函数:to_date()
select to_date('2018-11-09','yyyy-mm-dd') from dual;
字符串转数字函数:to_number()
select to_number('23121.32') from dual;
替换NULL值函数:nvl(n1,n2)如果n1为空,返回n2的值,否则返回n1的值,要求两个参数的类型一致,至少能进行隐式转换
select nvl(comm,0) from emp;
nvl2(n1,n2,n3) n1为空返回n3,不为空,返回n2
select nvl2(comm,100000,0) from emp;
集合函数:
avg()求平均值函数,返回数值类型
select avg(sal) from emp;
count()求记录数量的函数
select count(*) from emp;
select count(sal) from emp group by deptno;
返回最大最小值函数:max() min()
select max(sal) from emp;
select min(sal) from emp;
求和函数:sum()
select sum(sal) from emp;
其他函数:
表达式匹配函数:decode()
select decode(grade,1,'E',2,'D',3,'C',4,'B',5,'A') from salgrade;
标签:sysdate,内置,函数,截取,emp,dual,oracle,select
来源: https://www.cnblogs.com/chlme-wyn-001/p/11134348.html