二、 数值

格式串 说明及示例

---------- -----------------------------------------------------------

, 在指定位置附加逗号(便于阅读),注意逗号不能出现于格式字串首位,并且对于小数点的数字无效

    例如:

    SQL> select to_char(389999.00,¨99,999,999¨) from dual;

    TO_CHAR(389

    -----------

    389,999
. 按指定格式显示小数点及小数点后位置(指定数字没有小数的话,以0补足)

    例如:

    SQL> select to_char(18,¨999.000¨) from dual;

    TO_CHAR(

    --------

    18.000
$ 字符前附加$符

    例如:

    SQL> select to_char(18,¨$999¨) from dual;

    TO_CH

    -----

    $18

    SQL> select to_char(18,¨999$¨) from dual;

    TO_CH

    -----

    $18
0 字符头部或尾部附加0

    例如:

    SQL> select to_char(18.0,¨0999¨) from dual;

    TO_CH

    -----

    0018
9 与上类似以指定长度返回数值格式,不过如果被格式化的数值长度短于指定格式,则以空格补足。

    例如:

    SQL> select to_char(18.0,¨9999¨) from dual;

    TO_CH

    -----

    18
B 当整数部分是0时返回空格(即使存在0格式串也忽略)。

    例如:

    SQL> select to_char(0.18,¨B0999¨) from dual;

    TO_CH

    -----
C 返回ISO默认指定的标识(默认标识可参见:NLS_ISO_CURRENCY)

    例如:

    SQL> select to_char(128.18,¨C999999.99¨) from dual;

    TO_CHAR(128.18,¨C

    -----------------

    CNY128.18
D 返回指定的小数点形式(默认符:.)(默认标识可参见:NLS_NUMERIC_CHARACTER)

    例如:

    SQL> select to_char(128.18,¨9999D99¨) from dual;

    TO_CHAR(

    --------

    128.18

    SQL> alter session set nls_numeric_characters=¨:"¨;

    会话已更改。

    SQL> select to_char(128.18,¨9999D99¨) from dual;

    TO_CHAR(

    --------

    128:18
EEEE 使用科学记数法显示

    例如:

    SQL> select to_char(128.18,¨9EEEE¨) from dual;

    TO_CHAR

    -------

    1E+02
G 与逗号功能类似,用指定字符分隔字串(默认符:,)(默认标识可参见:NLS_NUMERIC_CHARACTER)。

    例如:

    SQL> select to_char(11128.18,¨99G999¨) from dual;

    TO_CHAR

    -------

    11,128

    SQL> alter session set nls_numeric_characters=¨:"¨;

    会话已更改。

    SQL> select to_char(11128.18,¨99G999¨) from dual;

    TO_CHAR

    -------

    11"128
L 指定位置显示本地默认符号(默认值见:NLS_CURRENCY)

    例如:

    SQL> select to_char(999,¨L999¨) from dual;

    TO_CHAR(999,¨L

    --------------

    ¥999

    SQL> alter session set nls_currency=¨haha¨;

    会话已更改。

    SQL> select to_char(999,¨L999¨) from dual;

    TO_CHAR(999,¨L

    --------------

    haha999
MI 负值在尾部显示-号,正值在尾部附加空格。另:该格式符必须处于格式串尾部

    例如:

    SQL> select to_char(-18,¨999MI¨) from dual;

    TO_C

    ----

    18-

    SQL> select to_char(18,¨999MI¨) from dual;

    TO_C

    ----

    18
PR 负值以<>尖括号包括,正值在头尾部各附加空格。另:该格式符必须处于格式串尾部

    例如:

    SQL> select to_char(-18,¨999PR¨) from dual;

    TO_CH

    -----

    <18>

    SQL> select to_char(18,¨999PR¨) from dual;

    TO_CH

    -----

    18
RN/rn 返回罗马数字形式。注:大写格式串返回大写罗马数字,小写格式串返回小写罗马数字:)

    例如:

    SQL> select to_char(18,¨RN¨) from dual;

    TO_CHAR(18,¨RN¨

    ---------------

    XVIII

    SQL> select to_char(18,¨rn¨) from dual;

    TO_CHAR(18,¨RN¨

    ---------------

    xviii
S 显示数值正负值符号。可出现于格式串首部或尾部。

    例如:

    SQL> select to_char(18,¨S9999¨) from dual;

    TO_CH

    -----

    +18

    SQL> select to_char(18,¨9999S¨) from dual;

    TO_CH

    -----

    18+
TM 字符格式转换(标准数值与科学计数法),可以通过附加9或e控制输出,默认是tm9,如果输出超过64个字符,则数据库自动转换成科学计数法显示。该格式串不能与其它的数值型格式串同时使用。

    例如:

    SQL> select TO_CHAR(128,¨tme¨) from dual;

    TO_CHAR(128,¨TME¨)

    ----------------------------------------------------------------

    1.28E+02

    SQL> select TO_CHAR(1.28E+02,¨tm¨) from dual;

    TO_CHAR(1.28E+02,¨TM¨)

    ----------------------------------------------------------------

    128
U 与L类似,在指定位置显示货币单位(默认值见:NLS_DUAL_CURRENCY)

    例如:

    SQL> select TO_CHAR(128,¨999U¨) from dual;

    TO_CHAR(128,¨9

    --------------

    128 ¥

    SQL> alter session set nls_dual_currency=¨aaa¨;

    会话已更改。

    SQL> select TO_CHAR(128,¨999U¨) from dual;

    TO_CHAR(128,¨9

    --------------

    128aaa
V 数值+10的n次方,n=V后9的个数

    例如:

    SQL> select TO_CHAR(128,¨999V999¨) from dual;

    TO_CHAR

    -------

    128000
X 返回指定数值对应的16进制数,必须是正数。如果指定数值非整的话,oracle会自动round取整。

    例如:

    SQL> select TO_CHAR(16,¨XXXX¨) from dual;

    TO_CH

    -----

    10