暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 在十进制数中截断十进制前的数字

ASKTOM 2020-09-29
209

问题描述

嗨,
我在一个更新查询中遇到问题。
有一列我正在更新,其数据类型是数字 (9,5)。所以它可以在小数之后容纳5位,在小数之前容纳4位。

我正在使用round函数,以便照顾十进制之后的位置。
但是对于某些记录,该值被计算为123546.12345,因此我在更新时1438溢出错误。

我想要一个快速的方法 (或函数),只是摆脱小数点前的额外数字在这种情况下。

因此,在上面的示例中,我希望输出为1235.12345
请建议一个合适的方法。谢谢!

专家解答

你不能就这样砍掉单位或十个!它给出了一个完全不同的数字,完全不像四舍五入!

说真的,NEVER DO THIS!

如果您有一个数字 (9,5),则可以存储的最大值为9999.99999。

如果您需要存储比这更大的数字,则需要提高列的精度。除非有某种原因限制最大值,否则您最好允许最大精度 (38位):

create table t (
  c1 number ( 9, 5 )
);

alter table t 
  modify c1 number ( 38, 5 );
复制



文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论