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