美文网首页
Oracle函数

Oracle函数

作者: Mr_J316 | 来源:发表于2019-05-09 10:35 被阅读0次

每种数据库都会在标准SQL基础上扩展函数库。一般并不推荐在Java程序中使用特定数据库的函数,这将导致程序代码与特定数据库耦合,造成移植性问题。

字符函数

小写转大写函数upper

select * from emp where ename=upper('smith') ; 

大写转小写函数lower

select lower(ename) from emp ; 

将单词第一个字母大写函数 initcap

select initcap(ename) as 姓名 from emp ; 

字符串连接函数 concat

select concat(empno ,ename) from emp ; 

//  字符串连接可使用||运算符实现
select empno||ename from emp ; 

字符串截取函数 substr

select substr(ename, 1 , 3) from emp ;
select substr(ename, 0 , 3) from emp ; 
// 从第一个开始取,取3个(0和1都表示第一个)

字符串长度函数 length

select * from emp where length(ename)=5 ; 

字符串内容替换函数 replace

select replace(ename , 'S' , 'X') from emp ; 

数学函数

四舍五入函数 round

select round(789.536 , 2) from dual ; //dual为哑元表,是缓存中的虚拟表
select round(789.536) from dual ; 
select round(789.536 , -2) from dual ; 

截断小数位函数 trunc

select trunc(789.536 , 2) from dual ;
select trunc (789.536) from dual ; 
select trunc (789.536 , -2) from dual ; 

返回天花板值函数ceil(n)

select ceil(5.67) from dual

返回地板值函数floor(n)

select floor(5.67) from dual

取模函数 mod

select mod(10 , 3) from dual ; 

日期函数

获取当前日期函数

select sysdate from dual ; 
select  systimestamp  from dual ;

获取给定日期范围内的月数函数

select ename , months_between(sysdate , hiredate) from emp ; //获取两个日期相差几个月
select ename , round(months_between(sysdate , hiredate)) from emp ;

在指定日期上加上指定月数函数

select add_months(sysdate , 4) from  dual ; //当前日期加四个月的日期

返回指定日期后的星期对应的日期

select next_day(sysdate , '星期一') from dual ; //从当前算,找下一个星期一

求出给定日期的当月最后一天日期

select last_day(sysdate) from dual ; 

转换函数

将指定表达式转换成字符串函数

select empno,ename,to_char(hiredate,'yyyy') as year,to_char(hiredate,'mm') as months , 
    to_char(hiredate,'dd') as day from emp ;
// 可以用fm去掉月份前面的前导0
select empno,ename,to_char(hiredate, 'yyyy-mm-dd') from emp ; 
select empno,ename,to_char(hiredate, 'fmyyyy-mm-dd') from emp ; 
select to_char(sysdate,'yyyy-mm-dd:hh24:mi:ss') from dual;
select to_char(systimestamp,'yyyy-mm-dd:hh24:mi:ss:ff3') from dual;
// 给工资加千位分隔符
select empno,ename,to_char(sal, '99,999') from emp ; 
// 给工资加货币符号,$是美元,L(Local) 代表本地货币
select empno,ename,to_char(sal, '$99,999') from emp ;

字符串转数字函数 to_number

select to_number('123')+to_number('123') from dual ; 

字符串转日期函数 to_date

select to_date('2010-12-20','yyyy-mm-dd') from dual ; 

通用函数

nvl函数

nvl(表达式1, 表达式2)
// 如果表达式1的值为null,则返回表达式2的值,否则返回表达式1的值

// 示例:计算职员年薪(月薪sal+奖金comm)*12,奖金可能为null
select empno,ename,(sal+nvl(comm,0))*12 income from emp;

decode函数

decode(关键字,键1,值1,键2,值2,……,值n)   

//查询emp表,要求将所有英文职位转换为中文输出:clerk(业务员)、salesman(销售员)、
//manager(经理)、analyst(分析员)、president(总裁)。
select empno as 雇员编号,ename as 雇员姓名,
decode(job,'CLERK','业务员','SALESMAN','销售人员','MANAGER','经理','ANALYST',
'分析员','PRESIDENT','总裁','其它') as 职位 from emp ;

相关文章

网友评论

      本文标题:Oracle函数

      本文链接:https://www.haomeiwen.com/subject/oswioqtx.html