我创建了一个表格,其中一列的格式为NUMBER(2,3)
. 我尝试插入值5.73,但它不起作用。
错误是:
ORA-01438 - "value larger than specified precision allowed for this column"
Cause: When inserting or updating records, a numeric value was entered
that exceeded the precision defined for the column.*
我阅读了文档,但不了解规模。
那么,小数点后有 0-99 个值的接受格式是什么?
谢谢。
你误解了精度和比例。 您有一个精度为 2 的数字。 这意味着有两个有效数字。 它的小数位数为 3,这意味着它们位于小数点的右侧。
因此,您的列可以表示介于 0.000 和 0.099 之间的值
你想要的是NUMERIC(5, 3)
. "精度 - 小数位数"是小数点左侧的位数。
这是从这里来的: https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832
或者,您还可以指定精度(总位数(和小数位数(小数点右侧的>位数(:
column_name数(精度、小数位数(
因此,在您的示例中,您允许总共 2 位数字(和小数点右侧的 3 位数字(。这不适用于 5.73,也许您需要一种允许 3 位数字 2 位的数字 (3,2( 可以在小数点的右边。