Format model是用来在字符串与日期,字符串与数字之间进行转换的时候的格式化模板,主要用在TO_CHAR,TO_NUMBER,TO_DATE等一些转换函数中。Oracle定义了很多format element,由format element 组成的字符串就是format model,应用程序可以根据自己不同的需求定义不同的format字符串以达到需要的显示或者存储。
Number Format
Number format用来格式化数字字符串,将指定数字字符串或者数字按照某种格式转换成对应数字或者字符串存储或者显示,需要注意如果某些情况可能会引起舍入操作。
element | desc | sample | result |
, | 分组分隔符 | to_char(9999, '9,999') | ' 9,999' |
. | 小数点 | to_char(99.99, '99.99') | ' 99.99' |
$ | $前缀 | to_char(9999, '$9999') | ' $9999' |
0 | 前导或后缀0的值 | to_char(999, '0999') | ' 0999' |
9 | 指定位数和正负的值 | to_char(-999, '9999') | ' -999' |
B | 如果整数部分为零,则返回为空格 | to_char(0.99, 'B99.99') | ' .99' |
C | 返回带ISO货币符号的值,由NLS_ISO_CURRENCY 指定 | to_char(99, 'C99') | 'CNY99' |
D | 相当于小数点,由NLS_NUMBER_CHARACTER指定 | to_char(99.99, '99D99') | ' 99.99' |
E | 科学计数法 | to_char(123.45, '9.9EEEE') | '1.2E+02' |
G | 相当于分组分隔符,由NLS_NUMBER_CHARACTER指定 | to_char(9999, '9G999') | ’ 9,999‘ |
L | 返回带本地货币符号的值,由NLS_CURRENCY指定 | to_char(9999, 'L9G999') | '¥9,999' |
MI | 返回值末尾添加负号或者空格,表示正负数 | to_char(-999, '9999MI') | ' 999-' |
PR | 同上标识正负数,整数由前导和后缀空格,负数则是<> | to_char(-999, '9999PR') | ' <999>' |
S | 同上表示正负数,由前导正负号或者后缀正负号,位置由S在format中的位置决定 | to_char(-999, 'S9999') | ' -999' |
TM | 字符格式转换(标准数值与科学计数法),少于64位时相当于to_char(number)不带参数 | to_char(1234, 'TME') | '1.234E+03' |
U | 返回带双币负号的值,由NLS_DUAL_CURRENCY 决定 | to_char(123, '999U') | '123¥' |
V | 返回给定值与10的n次幂的积 | to_char(123, '999V9') | ' 1230' |
X | 返回给定数值的16进制表示,对于小数会自动进行舍入 | to_char(123, 'XX') | ' 7B' |
RN/rn | 返回给定数值的罗马数字表示,只能显示1-3999 | to_char(12, 'RN') | ' XII' |
Note: 格式化过程中,如果表达式的值的有效数字超过format种指定的位数,小数部分根据format中小数的位数进行四舍五入,整数部分舍入后如果没有超出format中定义的位数,则正常输出,否则将会以#输出。
例如:to_char(9999, '999'),to_char(99.999, '99.99')都会输出#串,但是to_char(99.444, '99.99')就会输出' 99.44'。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7939908/viewspace-764908/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7939908/viewspace-764908/