如何在SQL中将字符列转换为数字?

时间:2019-03-14 05:59:50

标签: sql oracle dataformat

该列中的值示例为:

$3,459.09
$98.00
$6,789,123.15
$5,435.00

我可以使用子字符串删除美元符号,但是找不到将字符转换为数字的方法。

我尝试了几种选择 1. to_number(billed_amount) end as paid_amount_value 2. cast ( billed_amount as INT) as paid_amount_value

错误: 第一次:

ORA-01722: invalid number
01722. 00000 -  "invalid number"
*Cause:    The specified number was invalid.
*Action:   Specify a valid number.

第二次:

ORA-00932: inconsistent datatypes: expected NUMBER got CHAR
00932. 00000 -  "inconsistent datatypes: expected %s got %s"

3 个答案:

答案 0 :(得分:2)

使用TO_Number并设置'$999,999,999.99'

   select TO_Number('$3,459.09','$999,999,999.99') from dual

所以在您的情况下

select TO_Number(column_name,'$999,999,999.99') from table_name

demo link

答案 1 :(得分:0)

如果您不使用double作为数据类型,则使用double。您需要删除逗号和空格(如果存在)

答案 2 :(得分:0)

您的列值确实具有双精度值,因此您必须将其转换为十进制。您可以使用To_number来解决。.

如果您在错误消息中发现这些值之间确实有空格。 因此,尝试删除它们,然后强制转换其数据类型。

to_number(billed_amount) as paid_amount为您服务to_number

要替换空白,您可以使用replace replace