#TO_NUMBER
TO_NUMBER函数将expr的值按format格式转换为NUMBER类型的数据。
expr值的数据类型可以为:
- 数值型:此时不需要指定format,函数直接转换为NUMBER类型。
- 字符型:此时函数将根据format格式转换,且expr内容需符合指定的format格式。
当expr的值为NULL时,函数返回NULL。
format
指定转换的格式,支持以下字符的组合:
- 小数点:
.
,如'99.99' - 美元符号:
$
,如'$9,999' - 强迫零显示:
0
,如'00000' - 指定位置返回数字:
9
,如'9999' - 指定位置返回小数点:
D
,如'99D99' - 设首位或末尾为-或+:
S
,如'S9999'' (以下为列存表专用格式) - 千位分隔符:
,
,如'9,999' - 当整数部分为零时,返回定点数字整数部分的空格:
B
,如'B99' - 在指定位置返回货币符号:
C
,如'C99' - 以科学计数法的形式返回数字:
EEEE
,如'9EEEE' - 在指定位置返回千位分隔符:
G
,如'9G9' - 在指定位置显示货币符号:
L
,如'L99' - 负值末尾填充负号,正值末尾填充空格:
MI
,如'9MI' - 负值放在<>中,正值首尾填充空格:
PR
,如'9PR' - 返回大写罗马数字形式:
RN
,如'RN' - 返回小写罗马数字形式:
rn
,如'RN' - 以最少的字符数返回十进制数字字符串:
TM
,如'TM' - 在指定位置返回欧元等货币符号:
U
,如'U99' - 返回10n值,其中n是V后面的数字:
V
,如'99V99' - 返回指定数字的十六进制值:
X
,如'XXX' - 去掉前后空格和小数后面多余的0:
FM
,如'FM999'
示例
--将所有数据转化为NUMBER类型输出,此数据的显示宽度与SET NUMWIDTH有关
SELECT TO_NUMBER(numbera) n1,
TO_NUMBER(numberb) n2,
TO_NUMBER(numberc) n3,
TO_NUMBER(numberd) n4,
TO_NUMBER(numbere) n5,
TO_NUMBER(numberf) n6,
TO_NUMBER(numberg) n7
FROM numbers;
N1 N2 N3 N4 N5 N6 N7
----------- ----------- ----------- ----------- ----------- ----------- -----------
-5 55 5555 5.5556E+18 5.55499983 -5.5555556 555