一、数值函数
(1) round:四舍五入
select round(45.926, 2) 一, round(45.926, 1) 二, round(45.926, 0) 三, round(45.926, -1) 四, round(45.926, -2) 五 from dual;// 45.93 45.9 45 50 0
(2) trunc:截取
select trunc(45.926, 2) 一, trunc(45.926, 1) 二, trunc(45.926, 0) 三, trunc(45.926, -1) 四, trunc(45.926, -2) 五 from dual;//45.92 45.9 45 40 0
(3) mod:取模
select mod(1600, 300) from dual; //100
(4)ceil: 向上取整 floor:向下取整
select ceil(121/30), floor(121/30) from dual;// 5 4
二、转换函数
(1) to_char 和 to_number
把薪水转换为本地货币字符型
select empno,sal,to_char(sal,'L9,999') from emp; // L是本地货币符号 9表示一位数字 ,表示千位符
把上述某个结果转回数值型
select to_number('¥2,975','L9,999') from dual;
(2)to_char 与 to_date
显示 “yyyy-mm-dd hh24:mi:ss 今天是 星期几”
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss "今天是" day') from dual; // day:星期几
将上述输出字符串反转回日期
select to_date('2017-12-04 01:12:48 今天是星期一', 'yyyy-mm-dd hh24:mi:ss "今天是" day')from dual;
查询 1981-11-17 日入职的员工信息:
select * from emp where to_char(hiredate, 'YYYY-MM-DD') = '1981-11-17';
select * from emp where hiredate = to_date('1981-11-17', 'YYYY-MM-DD');
(3) oracle 的隐式转换和显示转换:
select 11+'22' from dual;//会做隐式转换, 将'22'转换成 22
select 11+to_number('22') from dual;
select '11' || 22 from dual;
select '11' || to_char(22) from dual;
select 11+'22' from dual; // 会做隐式转换, 将 22 转换成'22'
总结:当没有明确转换函数的时候, 如果类型不一致, 会进行隐式转换。