对TO_CHAR的讨论可以分为从两种类型的数据到字符的转换:DATE和NUMBER。
TO_CHAR函数返回VARCHAR2数据类型的值。
1. NUMBER TO CHAR
语法: TO_CHAR(num,[format])
例:
SQL> select to_char(001)||'is a special number' from dual;
TO_CHAR(001)||'ISASP
--------------------
1is a special number
SQL> select to_char(0001,'09999999') from dual;
TO_CHAR(0
---------
00000001
数字格式掩码
格式元素 |
元素说明 |
格式 |
数字 |
字符结果 |
---|---|---|---|---|
9 |
数字宽度 |
9999 |
12 |
12 |
0 |
显示前面的0 |
0999 |
12 |
0012 |
. |
小数点的位置 |
099.99 |
02.4 |
002.40 |
D |
小数分割点的位置 |
099D99 |
09.9 |
009.90 |
, |
逗号的位置 |
099,999 |
09080 |
009,080 |
G |
组分隔符的位置 |
099G999 |
09080 |
009,080 |
$ |
美元符号 |
$099 |
9 |
$009 |
L |
当地货币 |
L099 |
9 |
GBP009 (如果nls_currency设置为GBP) |
MI |
表示复数的减号的位置 |
9999MI |
-9876 |
9876- |
PR |
包围在括号内的负数 |
999PR |
-98 |
<98> |
EEEE |
科学计数法 |
99.99EEEE |
121.976 |
|
U |
nls_dual_currency |
U00999 |
3040 |
CAD03040 (如果nls_dual_currency设置为CAD) |
V |
乘以10n次(n是V之后9的数量) |
99999V99 |
3040 |
304000 |
S |
前面加上+或者- |
S999999 |
3040 |
+3040 |
SQL> select to_char(87,'999PR') from dual;
TO_CH
-----
87
SQL> select to_char(-87,'999PR') from dual;
TO_CH
-----
<87>
SQL> SELECT TO_CHAR(121.976,'99.99EEEE') FROM DUAL;
TO_CHAR(12
----------
1.22E+02
SQL> ALTER SESSION SET NLS_DUAL_CURRENCY = 'CAD';
Session altered.
SQL> SELECT TO_CHAR(3040,'U00999') FROM DUAL;
TO_CHAR(3040,'U0
----------------
CAD03040
SQL> SELECT TO_CHAR(3040,'99999V99') FROM DUAL;
TO_CHAR(
--------
304000
SQL> SELECT TO_CHAR(-3040,'99999S') FROM DUAL;
TO_CHA
------
3040-