Oracle 的转换函数 隐式转换和显示转换

oracle可以在的不同的数据类型之间完成转换,可以使用隐式转换和显示转换。

select * from emp where hiredate='17-11月-8';   --隐式转换
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual;   --使用to_char函数进行显示转换

如果隐式转换和显示转换都可以使用,应该首选哪个呢?

※SQL优化:如果隐式、显示都可以使用,应该首选显示,可以省去Oracle的解析过程。

自动转换,前提条件是:被转换的对象是可以转换的。 (ABC→625 可以吗?) 【PPT】  24

显示转换: to_char(数据,格式)   to_number    to_date

to_char函数

select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss "今天是" day') from dual; 
 --在固定的格式里加入自定义的格式,是可以的,必须要加“”。

在屏幕上显示:2015-05-11 16:17:06 今天是 星期一

to_date函数

反向操作:已知字符串“2015-05-11 15:17:06 今天是 星期一转化成日期

select to_date('2015-05-11 15:17:06 今天是 星期一', 'yyyy-mm-dd hh24:mi:ss "今天是" day') from dual;

to_number函数

将¥2,975.00转化成数字

select to_number('¥2,975.00', 'L9,999.99') 转成数字 from dua;

通用函数

通用函数适用于任何数据类型,包括NULL空值 

nvl2: 是nvl函数的增强版。

nvl2(a, b, c)   a = null 返回 c, 否则返回b

使用nvl2求员工的年收入:

select empno, ename, sal, sal*12, sal * 12 + nvl2(comm, comm, 0) 年薪 from emp;

nullif nullif(a, b) a = b 时返回null, 不相等的时候返回a值。

select nullif('L9,999.99', 'L9,999.99') from dual;

coalesce: coalesce(a, b, c, …, n) 从左向右找参数中第一个不为空的值。

select comm, sal, coalesce(comm, sal) 结果值 from emp;

暂无评论

发表评论