(本文章内容仅在windows10下经测试能够运行,不能保证其他环境下的可靠性)
oracle单行函数:作用于一行,返回一个值
字符函数
upper和lower,使用案例代码如下:
---字符函数 ----upper(varchar) ----将字符串中小写字母转换为大写 ----参数1:一个字符串 select upper('yes') from dual; --output:YES ----lower(varchar) ----将字符串中大写字母转换为小写 ----参数1:一个字符串 select lower('Yes') from dual; --output:yes
数值函数
round、trunc、mod,使用案例代码如下:
---数值函数 ----round(number,[number(n)])函数 ----四舍五入取近似值 ----参数1:一个数值,要取近似值的数值 ----参数2:一个带符号整型数值,可选参数,不给定默认为0,负数表示精确到小数点前几位,正数表示精确到小数点后几位 select round(26.18) from dual; --output:26 select round(26.18,1) from dual; --output:26.2 select round(26.18,-1) from dual; --output:30 select round(56.18,-2) from dual; --output:100 ----trunc(number,[number(n)])函数 ----截取取近似值 ----参数1:一个数值,要取近似值的数值 ----参数2:一个带符号整型数值,可选参数,不给定默认为0,负数表示截取到小数点前几位,正数表示截取到小数点后几位 select trunc(26.18) from dual; --output:26 select trunc(26.18,1) from dual; --output:26.1 select trunc(26.18,-1) from dual; --output:20 select trunc(56.18,-2) from dual; --output:0 ----mod函数 ----求余函数/取模函数 ----参数1:被模数 ----参数2:模数 select mod(10,3) from dual; --output:1
日期函数和变量
months_between函数和sysdate系统时间,使用场景案例代码如下:
---日期函数 ---查询emp表每个员工入职天数 select sysdate-e.hiredate from emp e; ----查询一天后的时间 select sysdate+1 from dual; --output:2020/5/29 11:23:16 ---查询emp表每个员工入职月数 select months_between(sysdate,e.hiredate) from emp e; ----months_between(date,date)函数 ----求两个日期间相隔的月数,结果带符号,以第二个日期参数晚于第一个日期参数为正方向 ----参数1:减日期 ----参数2:被减日期 select months_between(e.hiredate,sysdate) from emp e; select months_between(e.hiredate,e.hiredate) from emp e; ---查询emp表每个员工入职周数 select round((sysdate-e.hiredate)/7) from emp e; ---查询emp表每个员工入职年数 select round(months_between(sysdate,e.hiredate)/12) from emp e;
转换函数
to_char和to_date,使用案例代码如下:
---转换函数 ----to_char(date,varchar) ----日期转换为字符串 ----参数1:一个日期类型参数,表示欲转化为字符串的日期 ----参数2:一个字符串类型参数,表示日期转化为字符串的格式 select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual; --output: 2020-05-28 11:37:03 select to_char(sysdate,'fm yyyy-mm-dd hh:mi:ss') from dual; --output: 2020-5-28 11:37:12 select to_char(sysdate,'fm yyyy-mm-dd hh24:mi:ss') from dual; --output: 2020-5-28 11:37:24 --日期格式占位符 yyyy--四位年份 mm--月份 dd--日期 hh--小时 hh24--24小时制时间 mi--分钟 ss--秒数 fm--不带前导零 ---to_date(varchar,varcahr) ----将字符串类型数据转换为日期类型数据 ----参数1:欲转换为日期类型的字符串数据 ----参数2:日期字符串的格式 select to_date(' 2020-5-28 11:37:24','fm yyyy-mm-dd hh24:mi:ss') from dual; --output:2020/5/28 11:29:54
通用函数
nvl函数,使用场景和案例代码如下:
---计算emp每个员工一年的年薪 select e.sal*12+nvl(e.comm,0) from emp e; ---通用函数 ---nvl(varchar/null/number,data) ----当参数1为null时返回残数2,否则返回参数1 ----参数1:任意类型数据 ----残数2:任意类型数据 select nvl(null,sysdate) from dual; --output:2020/5/28 11:45:50 select nvl('null',11) from dual; --output:null(字符串)