转换函数用于将数据类型从一种转为另外一种,在某些情况下,oracle server允许值的数据类型和实际的不一样,这时oracle server会隐含的转化数据类型,比如:
create table t1(id number);
insert into t1 values(‘10’); --->这样oracle会自动的将‘10’转换为10
create table t2(id varchar2(10));
insert into t2 values(11) 这样oracle就会自动的将11转换为‘11’
我们要说的是尽管oracle可以这样隐含的将数据类型的转换,但是它并不适应所有的情况,为了提高程序的可靠性,我们应该使用转换函数进行转换。
n 使用to_date函数
(把字符串转换成指定格式的日期)
我们在插入date列的时候,我们发现,必须以默认的格式(日-月-年)添加,实际上我们希望以自己习惯的方式添加,比如:
insert into emp(empno,hiredate) values(2222,’1988-11-11’); 这样会出错。
我们可以使用to_date进行日期转换
insert into emp(empno,hiredate) values(2222,to_date(’1988-11-11’,’yyyy-mm-dd’);
请大家思考:如何插入列带有日期的表,并按你-月-日的格式插入?
n to_char(number/date/char)...
你可以使用select ename,hiredate,sal from emp where deptno=10;显示信息,可是,在某些情况下,这个病不能满足你的需求。
?日期是否可以显示时分秒
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH2
------------------------------
2016-10-15 17:11:06
9:显示数字,并忽略前面0 0:显示数字,如位数不足,则用0补齐 .:在指定位置显示小数点 ,:在指定位置显示逗号 $:在数字前加美元 L:在数字前加本地货币符号 C:在数字前加国际货币符号 G:在指定位置显示组分隔符, D:在指定位置显示小数点符号(.) |
yy:两位数的年份 2004年-->04 yyyy:四位数的年份 2004年 mm:两位数的月份 8月-->08 dd:两位素的天 30日-->30 hh24:24小时制 晚上8点-->20:00 hh12:12小时制 8点-->08:00 mi:ss 显示分钟:秒 day |
?薪水是否可以显示指定的货币符号
SQL> select ename,to_char(sal,'L99G999D99') from emp;
ENAME TO_CHAR(SAL,'L99G999D99')
---------- -------------------------
xiaohong
SMITH ¥1,190.00
ALLEN ¥1,600.00
WARD ¥1,250.00
JONES ¥2,975.00
?根据deptno编号显示不同的信息
SQL> select ename, decode(deptno,10,'10号部门',20,'20号部门',30,'30号部门') from emp;
ENAME DECODE(DEPTNO,10,'10号部门',20
---------- ---------------------------
xiaohong
SMITH 20号部门
ALLEN 30号部门
WARD 30号部门
JONES 20号部门