TO_NUMBER(TO_DECIMAL)

说明

转换成NUMERIC类型。

语法

to_number ::=

参数

text_expression1

给定的字符串表达式:这其中包含数字、字符、符号。

text_expression2

给定的转换格式:这是用户所要最终得到的数字串。对应着给定的字符串,对于要得到的数字位,在转换格式中的对应位处填入0,反之以任一数字(除了0)、字符或符号代替。注意注释中的描述。

上述例子得出如下转换格式:'00+01q0as00.0/000+0**0'

上述的语法②是为了兼容oracle数据库中TO_NUMBER函数的一个功能,既将以int4数据类型或者text数据类型输入的数字或字符解析成16进制串,并将这个16进制串转化成10进制输出。具体参数描述如下:

int_expression1

以int4类型输入的16进制数(不可输入A,B,C,D,E,F字符)

text_expression1

以text串形式输入的int型数值,其中数字的取值范围是0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。

text_expression2

根据输入的int4值或以text形式输入的int值串的位数给定的转化格式(格式符的位数不小于int值的位数)

返回值

numeric类型

注解

给定的字符串某位如果不是数字,在转换格式中若输入了0,不报错,但是结果中并不输出这个非数字串值。如果那一位是数字,而是不想得到的数字,那么,在转换格式的对应位就不要填入0(可以为空格)。

示例

示例1: 使用 TO_NUMBER 转换

--  使用 TO_NUMBER 转换
SELECT TO_NUMBER('3A5.67/9', '0^0.00a0 ');
TO_NUMBER(numeric)      |
------------------------
35.679                  |
总数目:1


SELECT TO_NUMBER('3A5.67/9', '0^0.00a ');
TO_NUMBER(numeric)      |
------------------------
35.67                   |
总数目:1


SELECT TO_NUMBER(18, 'xx');
TO_NUMBER(numeric)      |
------------------------
24                      |
总数目:1