oracle - 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;
它抛出错误。
解决方案
我认为您将数字作为参数传递。否则你为什么要使用nvl。然后我看到您需要的查询将与此类似
select to_number(replace(nvl('89,333,22.2345','0'),',','')) from dual;
您的代码有问题:
- 由于 number 是一个 varchar,它必须放在撇号之间
- nvl 接受参数除以逗号。而且有一个右括号太多了
nvl(89,333,22.2345),0) -> nvl('89,333,22.2345',0)
推荐阅读
- r - 创建一个函数来计算 R 中的斜率 m=(y2-y1)/(x2-x1)
- c# - 如何将布尔值的 2D 字段写入控制台?
- javascript - 动态推送、拉取和设置猫鼬模式更新
- laravel - Laravel/Eloquent 分页和 groupBy 用于 postgres 物化视图模型
- unix - unix 比较文件名列表
- scala - 如何正确迭代 Array[String]?
- javascript - 如何重新定义关于闭包的 JS 函数?
- swift - 根据禁用与否更改 SwiftUI 中按钮的颜色
- c# - SQL Server 中的 DateTime2 以与 C# 不同的纳秒精度合并
- r - MOJO 预测给出退出状态 127