如何理解Number(p,s)的意义呢?

[复制链接]
查看11 | 回复7 | 2015-3-6 11:58:18 | 显示全部楼层 |阅读模式
有这样一个例子:
SQL> create table test (id number(5,2));
表已创建。
SQL> insert into test values (234.45);
已创建 1 行。
SQL> insert into test values (1234.5);
insert into test values (1234.5)

*
ERROR 位于第 1 行:
ORA-01438: 值大于此列指定的允许精确度
为什么插入1234.5会出错呢? 我猜测原因是这样的:1234.5的存贮值是1234.50,但是1234.50的有效位数是6位,超过了规定的有效位数5位,是不是这样呢?
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
是這樣的啊
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
number(有效位,精度)
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
5-2
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
SQL> insert into test values (1234);
insert into test values (1234)
ORA-01438: 值大于为此列指定的允许精度
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
Number(n,p)是:
n是指总位数;
p是小数精度,
n-p是整数部分的位数
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
http://www.itpub.net/viewthread.php?tid=905806



回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
在number(p,s)的列中,s是精度,小数点之前的位数为p-s
此题中是number(5,2),所以只能存<=999.99的数据
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行