nvl2函数_关于Oracle数据库的函数:

34403bf223f364c140a5e4a729545ec5.png

数值函数大全,在结尾(谢谢观看)!

6833db1557aaadf182c21a5638140ab0.png

--数值函数ceil(向上进一,向上取整,向上进一的意思就是只要是0001,有个一就会变成1.)

--实例:

select ceil(613.00001) from dual;--结果为614

--floor(向下取整,即使浮点数部分再大,也会被取掉)-实例:

select floor(614.66666) from dual;--结果为614

--round(四舍五入)实例:

select round(613.540555,-2)from dual;--结果为614,也可以在(613.540555,2)表示保留小数点后面几位,结果为613.54

--也可以把(613.540555,-2),结果为600,因为1不能向上取整.如果把3改成5及以上数字,就会是620.如果把1也改成5及以上,就会是700.

--正数,算小数点后,负数算小数点前.

--trunc(截断的意思)

select trunc(614.456) from dual;--结果为614,改成(614.-1)是610.-2就是600,-3就是0,它不会四舍五入.

f0f93767fa60a08cc9da6dbffd910fc6.png

--日期函数:

--获取当前时间

select sysdate from dual;--sysdate就是当前时间.

--months_between(计算两个日期间的月数)

--实例:查询所有员工入职的月数--hiredate的意思是受雇日期

select ename,months_between(sysdate,hiredate)from emp;

--如果想获得天数,直接把当前时间减去入职时间就好了.

select sysdate-hiredate from emp;

--add_months(给日期做加减)

--实例,给当前时间加五个月.

select sysdate,add_months(sysdate,5)from dual

fbc18bbbaf6c542ee5e7e9097c4b9d6a.png

--last_day(计算给定日期所在的月份的最后一天是哪个日期);

--实例:当月的最后一天

select sysdate,last_day(sysdate) from dual;

--自己定日期

select sysdate,last_day('14-6月-2999') from dual;

--年月的格式是xx-y月-xxyy.

--next_day(在给定的时间,去算下一个给定的时间是哪个点,如今天是星期三,星期四就是明天,下一个星期三,就是20号)

--实例:

select sysdate,next_day(sysdate,'星期日')from dual;

0f2a3877badebddd967a1c68552bfc85.png

--转换函数(作用是用于在不同数据类型间进行转换,number(数值类型),varchar2(字符串类型),date(日期类型)之间转换)

--三种函数:

--to_number,to_char,to_date(其中,日期不可以转换成数值,数值也不可以转换成日期)

--实例,把美元123,123,123.00转换成本币数字,不带字符(美元不能转成人民币,输入字符123的时候需要英文逗号)

select to_number('$123,123,123.00','$999,999,999.00') from dual;--你可以在括号外+1,意义在于你多了一美金.

--将字符串转成日期.

select to_date('2022-12-12 23:20:20','YYYY-MM-DD HH24:MI:SS') from dual;

--注意,在to_date里面可以任意书写日期格式,但转换时需要书写字母表达式,H表示24小时,但需要在H后面加上24,h表示12小时制.

0cc03924e06caa5d3dddc29eab906399.png

--to_char(将日期或数值转化成字符串)

--实例

select to_char(1231231231,'L999,999,999,999.99')from dual;

--第四个999代表那个1,如果只有一个多余的数,它默认为零,不显示出来

--将现在日期转换成字符类型表达出来

select sysdate, to_char(sysdate,'yyyy"年"mm"月"dd"日" hh24:mi:ss')from dual;

bcc29c62ca3f038c5c89d658cd160fe9.png

--通用函数(也叫其他函数)

--1.nvl(作用是用来处理空值,如果某个字段为空,则使用对应的数据进行替换)

--实例:如查询所有的员工的姓名,工资,提成和总工资(工资+提成)

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

--解释就是查询所有名字,工资,提成,工资+提成,如果没有提成的则用0表示提成.

--2. nvl2(:有三个参数,如果第一个参数不为空,则使用第二个参数,如果为空,则使用第三个参数)

select ename,sal,comm,nvl2(comm,sal+comm,sal)total from emp;

--意思就是,comm提成为空的情况下,直接打印第三个也就是sal原本的值,不为空,则在sal基础上加上comm.

--3.decode(类似于witch...case...)

--实例如:查询所有的职位,并显示对应的中文描述.

select distinct job, decode(job,'CLERK','职员','SALESMAN','销售','PRESIDENT','董事长','MANAGER','经理','ANALYST','分析师') from emp;

--加上distinct的意思就是,不显示相同的职位,

8d480848023e3f21c3b113d20fcacc19.png

--group by(进行分组查询,group by子句可以将查询分为若干个组)

--注意:出现在selet子句中的字段,如果不是包含在多行函数中,那么该字段必须同时在GROUP BY子句中出现.

--1.分组查询

--实例:统计每个部门的编号,最高工资和最低工资.

select deptno,max(sal),min(sal)from emp group by deptno;

--带where的分组查询

--实例如:查询每个部门的人数和平均工资.排除10部门.

select deptno,count(*),avg(sal) from emp where deptno<>10 group by deptno order by deptno;

--注意:必须要注意语法顺序.order by deptno的意思就是帮deptno排序.

--having

--注意:where子句中不允许出现分组函数.所以引入了having,用于过滤分组后的条件.

--实例:查询每个部门的总工资和平均工资,排除平均工资低于1600的部门.

select deptno,sum(sal),avg(sal) from emp group by deptno having avg(sal)>=1600 order by deptno;

--执行顺序:from->where->groud by->select->having->order by

d626a79aa9e9a701049a66e78f935d19.png

函数大全:

数值函数:

ABS(x)
【功能】返回x的绝对值
【参数】x,数字型表达式
【返回】数字
【示例】
select abs(100),abs(-100) from dual;

sign(x)
【功能】返回x的正负值
【参数】x,数字型表达式
【返回】数字,若为正值返回1,负值返回-1,0返回0
【示例】
select sign(100),sign(-100),sign(0) from dual;

ceil(x)
【功能】返回大于等于x的最小整数值
【参数】x,数字型表达式
【返回】数字
【示例】
select ceil(3.1),ceil(2.8+1.3),ceil(0) from dual;
返回4,5,0

floor(x)
【功能】返回小于等于x的最大整数值
【参数】x,数字型表达式
【返回】数字
【示例】
select floor(3.1),floor(2.8+1.3),floor(0) from dual;
返回4,5,0

power(x,y)
【功能】返回x的y次幂
【参数】x,y 数字型表达式
【返回】数字
【示例】
select power(2.5,2),power(1.5,0),power(20,-1) from dual;
返回:6.25,1,0.05
【相近】exp(y)
返回e的y次幂。(e为数学常量)
【关系】z=power(x,y),则y=1/log(z,x) (条件z,x>0)

exp(y)
【功能】返回e的y次幂(e为数学常量)
【参数】y,数字型表达式
【返回】数字
【示例】
select exp(3),exp(0),exp(-3) from dual;
返回:20.0855369,1 ,0.049787068
【相近】power(x,y)
返回e的y次幂。
【相反】ln(y)
返回e为底的自然对数。

log(x,y)
【功能】返回以x为底的y的对数
【参数】x,y,数字型表达式,
【条件】x,y都必须大于0
【返回】数字
【示例】
select power(4,2),log(16,2),1/log(16,4) from dual;
返回:16,0.25,2
select power(6.5,3),log(274.625,3),1/log(power(6.5,3),6.5) from dual;
返回: 274.625 , 0.195642521 , 3
【相近】ln(y)
返回e为底的y的对数。(e为数学常量)
【关系】z=power(x,y),则y=1/log(z,x) (条件z,x>0)

ln(y)
【功能】返回以e为底的y的对数(e为数学常量)
【参数】y,数字型表达式 (条件y>0)
【返回】数字
【示例】
select exp(3),exp(-3),ln(20.0855369),ln(0.049787068) from dual;
返回:20.0855369 , 0.049787068 , 3 , -3
【相近】log(x,y)
返回以x为底的y的对数
【相反】exp(y)
返回e的y次幂

mod(x,y)
【功能】返回x除以y的余数
【参数】x,y,数字型表达式
【返回】数字
【示例】
select mod(23,8),mod(24,8) from dual;
返回:7,0


round(x[,y])
【功能】返回四舍五入后的值
【参数】x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则四舍五入为y位小数,如果y小于0则四舍五入到小数点向左第y位。
【返回】数字
【示例】
select round(5555.6666,2.1),round(5555.6666,-2.6),round(5555.6666) from dual;
返回: 5555.67 , 5600 , 5556
【相近】trunc(x[,y])
返回截取后的值,用法同round(x[,y]),只是不四舍五入

trunc(x[,y])
【功能】返回x按精度y截取后的值
【参数】x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则截取到y位小数,如果y小于0则截取到小数点向左第y位,小数前其它数据用0表示。
【返回】数字
【示例】
select trunc(5555.66666,2.1),trunc(5555.66666,-2.6),trunc(5555.033333) from dual;
返回:5555.66 5500 5555
【相近】round(x[,y])
返回截取后的值,用法同trunc(x[,y]),只是要做四舍五入

sqrt(x)
【功能】返回x的平方根
【参数】x数字型表达式
【返回】数字
【示例】
select sqrt(64),sqrt(10) from dual;
返回:8 , 3.16227766
SIN(x)
【功能】返回一个数字的正弦值
【示例】select sin(1.57079) from dual;
返回: 1
SIGH(x)
【功能】返回双曲正弦的值
【示例】select sin(20),sinh(20) from dual;
返回:0.91294525, 242582598
COS(x)
【功能】返回一个给定数字的余弦
【示例】select cos(-3.1415927) from dual;
返回: -1
COSH(x)
【功能】返回一个数字反余弦值
【示例】select cosh(20) from dual;
返回:242582598
TAN
【功能返回数字的正切值
【示例】select tan(20),tan(10) from dual;
返回:2.2371609 ,0.64836083
TANH
【功能返回数字n的双曲正切值
【示例】select tanh(20),tan(20) from dual;
返回:1 ,2.2371609
ASIN(x)
【功能】给出反正弦的值
【示例】select asin(0.5) from dual;
返回:0.52359878
ACOS(x)
【功能】给出反余弦的值
【示例】select acos(-1) from dual;
返回:3.1415927
ATAN(x)
【功能】返回一个数字的反正切值
【示例】 select atan(1) from dual;
返回:0.78539816

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值