还是不懂这个number(p,s),s为负数的逻辑

来源:4-1 Oracle 操作表中的数据

180416

2018-12-13 11:11

https://img.mukewang.com/5c11c10f0001f1cd06530530.jpg

如图,字段b的数据类型是number(6,-3),但是能够插入和显示的数据都不止6位,plsql和sqlplus都是这样,为什么呢

更新:

https://img4.mukewang.com/5c11c17e0001236d05820113.jpg

图一插入的数据长度最大为9,图二是10,报错了。

重复一次,还是这样。

所以它的逻辑是 允许写入的整数部分的最大长度是p+s(s<0);

并且它截取3位是这样截的整数后三位为0,第四位四舍五入,跟的小数部分的都不同,跟数学的四舍五入逻辑也不同

感觉number(p,s)这个数据类型在s的符号不同的时候都不是同一个数据类型。

写回答 关注

1回答

  • zero1045081
    2019-05-06 22:04:52
    已采纳

    插入数字的整数部分最大长度应该是p-s,所以上图能够插入的最大长度是6-(-3)=9;

    如果s为负数时,就是对小数点左边的s个数字进行舍入。

Oracle数据库开发必备利器之SQL基础

为你带来Oracle开发必备的sql基础,为后续课程学习打下好的基础

160913 学习 · 680 问题

查看课程

相似问题