Oracle插入number类型数字超过16位,在pl/sql显示中自动四舍五入
1. 现象描述
今天遇到一个比较坑的问题,排查好长时间,所以必须记录下来。
Oracle数据库某个字段类型为number(16,10),插入值999999.9999999999,在pl/sql显示为1000000.000000000,也就是自动四舍五入。怀疑精度不够,为此将字段改为number(20,12), 结果还是一样,但是在前端却又是999999.9999999999。百思不得其解。
2. 原因
pl/sql对于超过16位的数字的查询结构自动四舍五入,但是数据库还是保持原来的值,也就是说保存的值没有变。
3. 解决方法
PL/SQL中工具->首选项中,sql窗口->勾选数字字段to_char.
你也可以直接用to_char函数,例如
select to_char(money) from xxx_table.
参考:https://blog.****.net/YimBa/article/details/78367357