sql函数的使用——转换函数

转换函数用于将数据类型从一种转为另外一种,在某些情况下,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可以这样隐含的将数据类型的转换,但是它并不适应所有的情况,为了提高程序的可靠性,我们应该使用转换函数进行转换。

使用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’);

 

请大家思考:如何插入列带有日期的表,并按你--日的格式插入?

to_charnumber/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号部门

posted @ 2019-07-01 14:25  樊伟胜  阅读(719)  评论(0编辑  收藏  举报