TO_NUMBER(TO_DECIMAL)¶
说明¶
转换成NUMERIC类型。
参数¶
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