Oracle 格式化数字

-- 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


你可能感兴趣的:(Oracle)