-- Start
所谓格式化数字指的是将数字转为字符串,或将字符串转为数字,下面几个函数可以用来格式化数字。
TO_CHAR(number, 'format')
TO_NUMBER('character', 'format')
TO_BINARY_FLOAT('character', 'format')
TO_BINARY_DOUBLE('character', 'format')
我们先来看看通过下面的 SQL 产生的结果吧。
SELECT TO_CHAR(number, 'format') FROM DUAL;
Number | Format | Result |
-1234567890 | 9999999999S | '1234567890-' |
0 | 99.99 | ' .00' |
+0.1 | 99.99 | ' .10' |
-0.2 | 99.99 | ' -.20' |
0 | 90.99 | ' 0.00' |
+0.1 | 90.99 | ' 0.10' |
-0.2 | 90.99 | ' -0.20' |
0 | 9999 | ' 0' |
1 | 9999 | ' 1' |
0 | B9999 | ' ' |
1 | B9999 | ' 1' |
0 | B90.99 | ' ' |
+123.456 | 999.999 | ' 123.456' |
-123.456 | 999.999 | '-123.456' |
+123.456 | FM999.009 | '123.456' |
+123.456 | 9.9EEEE | ' 1.2E+02' |
+1E+123 | 9.9EEEE | ' 1.0E+123' |
+123.456 | FM9.9EEEE | '1.2E+02' |
+123.45 | FM999.009 | '123.45' |
+123.0 | FM999.009 | '123.00' |
+123.45 | L999.99 | ' $123.45' |
+123.45 | FML999.99 | '$123.45' |
+1234567890 | 9999999999S | '1234567890+' |
那么 Oracle 支持哪些格式呢?看看下面的表格吧
Format | Description |
9 | 代表一位任意数字 |
. | 小数点 |
D | 本地化小数点(NLS_NUMERIC_CHARACTER) |
, | 千分位 |
G | 本地化千分位(NLS_NUMERIC_CHARACTER) |
S | 在前部或尾部添加正负号 |
0 | 在前部或尾部添加 0 |
$ | 在前部添加美元符号 |
L | 添加本地化货币符号(NLS_CURRENCY) |
U | 添加DUAL货币符号(NLS_DUAL_CURRENCY) |
C | 添加ISO货币符号(NLS_ISO_CURRENCY) |
B | 添加空格如果整数部分为0 |
X | 将10 进制转成16进制 |
V | 将要格式化的值乘以10n |
EEEE | 科学计数法 |
MI | 对于正数,在尾部添加空格 对于负数,在尾部添加负号 |
PR | 对于正数,用空格包围 对于负数,用<>包围 |
RN | 返回大写罗马数字 |
rn | 返回小写罗马数字 |
TM | 超过64位,返回科学计数法 |
除此之外,需要特别注意,格式化会引起四舍五入,如果数字过大,数字会被格式化成类似 ##### 这样的形式。
--更多参见:Oracle SQL 精萃
-- 声明:转载请注明出处
-- Last edited on 2015-06-12
-- Created by ShangBo on 2015-06-12
-- End