Oracle中的数据类型转换函数to_char  

2009-03-04 09:08:01|  



Oracle中的显式转换函数中,to_char是一个非常重要的函数,和to_date函数、to_number函数共同构成了oracle中的显式转换函数体系。Oracle中的to_char函数是一个非常常用而且灵活多变的函数,几乎可以将你的字符串变成你想要的任何形式。to_char一般有两种形式的用法,一是把日期型的数值变成字符串型的,二是把数值型的值变成字符串型的。

第一种形式:日期型的数值变成字符串型的

to_char(date,’格式模型’)

其中的格式模型是你希望转换出来的格式是什么样子。这个你可以自己定义。

注意格式模型必须包含在一对单引号之内且大小写敏感,可以包含一些预定义的格式元素,可以包含一个fm来去除空格或者多余的0

这里提到的预先定义的格式元素有两类,一是日期类型的

有如下所示的几个:


格式元素


含义


YYYY


完整的年份数字号码


YEAR


把当前的年份拼出来


RR


年份中阿拉伯数字的最后两位


MM


两位数的月份


MONTH


把当前的月份拼出来


MON


三个字母人月份


DY


用三个字母来表示当前的星期数


DAY


当前星期数的全拼


DD


数字的月份日期值


HH24


24进制的小时数


MI


分钟数


SS


秒数

SQL> select to_char(sysdate,’YEAR MM DD hh12:mi:ss’) from dual;

TO_CHAR(SYSDATE,’YEARMMDDHH12:MI:SS’)

——————————————————————————–

TWO THOUSAND EIGHT 04 26 09:55:38

上例中的月份’04’中的0其实是多余的,还可以将0去除的,这就需要使用’fm’关键字了,例如

SQL> select to_char(sysdate,’fmYYYY-MM-DD hh24:mi:ss’) from dual;

TO_CHAR(SYSDATE,’FMYYYY-MM-DDHH24:MI:S

————————————–

2008-4-26 22:11:41

使用fm关键词之后就没有多余的0了。

第二种形式:数值型的数值变成字符串型的

to_char(numeric,’格式模型’)

其中的格式模型有如下几种预先定义的模式,有如下几个


9


代表一个数字


0


强迫0显示


$


显示美元符号


L


强制显示一个当地的货币符号


.


显示一个小数点


,


显示一个千位分隔符号

例如:

SQL> select to_char(32346.123,’L99,999.99999′) from dual;

TO_CHAR(32346.123,’L99,999.99999′)

———————————————-

RMB32,346.12300

如果我们希望每个数值转换成字符串后时期位数相同,还可以强制在前面和后面加0,例如:

SQL> Select to_char(sal,’$00,000.00′) from emp;

TO_CHAR(SAL,’$00,000.0

———————-

$01,100.00

$01,600.00

$01,250.00

$02,975.00

$01,250.00

$02,850.00

$02,450.00

$03,000.00

$05,000.00

$01,500.00

$01,100.00