首页 > 解决方案 > Oracle将字符串更改为十进制

问题描述

我需要将字符串转换为小数。

所以字符串值为:89,333,22.2345

所以我想保留所有小数位并将其转换为:8933322.2345。

我尝试了以下查询:

从对偶中选择 to_number(replace(nvl(89,333,22.2345),0),',','');

这将其四舍五入为 893322。但我想要所有小数的结果:

如果我尝试运行此查询:

select to_number((replace(nvl(89,333,22.2345),0),',',''),'9999.99') from dual;

它抛出错误。

标签: oracleplsql

解决方案


我认为您将数字作为参数传递。否则你为什么要使用nvl。然后我看到您需要的查询将与此类似

select to_number(replace(nvl('89,333,22.2345','0'),',','')) from dual;

您的代码有问题:

  1. 由于 number 是一个 varchar,它必须放在撇号之间
  2. nvl 接受参数除以逗号。而且有一个右括号太多了

nvl(89,333,22.2345),0) -> nvl('89,333,22.2345',0)


推荐阅读