Oracle中的数据类型转换函数to_char
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