经常遇到将number、binary_float、binary_double等类型数据按指定的数据精度写入Oracle数据库而出现各种小问题,可以通过Oracle的转换函数to_char()做到。
to_char()函数
to_char()函数主要有以下几种常见的用法:
1. to_char(N)
将数值N直接转换为VARCHAR2字符串2. to_char(N,‘format’)
将数值N安装指定格式(format)转换为VARCHAR2字符串,其中format可以有以下格式:
序号 | 格式 | Example | 说明 |
---|---|---|---|
1 | ,(逗号) | ‘9999,999’ | 逗号,一般以千分位分组符号使用.如果需要您也可以当作是十分位,百分位出现,可以出现N次,视乎数字的大小而定变态的例子是 to_char(1234,’9,9,9,9’)。 注意事项:只能出现在整数部分。 |
2 | .(点) | ‘9999.99’ | 点只能出现在小数点对应的地方且只能出现一次,to_char(1234.34,’9,9,9,9.99’);* 注意事项:* 只能出现在一个地方,且在原来数据小数点位置。 |
3 | $(美元符号) | ‘$999.99’ | 美元.其实你可以放在任意地方(在10G下)to_char(1234.34,’9,9,9,9.$99’)注意事项:只能出现一次. |
4 | 0(零) | ‘0999.99’ | 零,在对应位置返回对应的字符,如果没有则以’0’填充, to_char(0.34,’9,9,9,0.$99’)=’$0.34’,to_char(1234,’9999.00’)=’1234.00’;注意事项:这是一个强制的符号,对应位没有,则以’o’填充,这是9很大不同地方 。 |
5 | 9 | ‘999.99’ | 9在小数位,则表示转换为对应字符,如果没有则以0表示;在整数位,没有对应则不填充字符,to_char(123,’999.99’)=123.00, to_char(123,’99999.9’)=123.0;注意事项:对于0和9而言,如果格式的位数不如数字的位数多,会返回’#’.譬如to_char(12345,’9999’)=’#####’ |
to_char(datetime)
将日期转化为字符串。主要的应用格式分为两类:简写单个字母(或者其复现形式)代表时间位置譬如yyyy ,mm,dd ,hh之类;其次是以英文的时间单词的简写代表时间,例如mon,day,year。下表的格式基本上也都可以用于TO_DATE, TO_TIMESTAMP, TO_TIMESTAMP_TZ,TO_YMINTERVAL,TO_DSINTERVAL函数。
序号 | 格式 | Example | 说明 |
---|---|---|---|
1 |
| 略 | 时间分隔符号,除了标准的几个,还允许用文字作为分割符号。例如 to_char(sysdate,’YYYY”年”mm”月”dd”日”’)=2008年04月24日 |
更多更详细的资料请参考: ORACLE函数TO_CHAR以及数字转换格式