插入 3 时出现“ORA-01438: 值大于此列允许的指定精度”
Posted
技术标签:
【中文标题】插入 3 时出现“ORA-01438: 值大于此列允许的指定精度”【英文标题】:"ORA-01438: value larger than specified precision allowed for this column" when inserting 3 【发布时间】:2013-01-16 11:52:18 【问题描述】:我在尝试将除 0 以外的任何数字插入格式为 NUMBER (2,2) 的字段时遇到该错误。
UPDATE
PROG_OWN.PROG_TPORCENTAJE_MERMA
SET
PCT_MERMA = 3
WHERE
IDN_PORCENTAJE_MERMA = 1
[错误代码:1438,SQL 状态:22003] ORA-01438:该列允许的值大于指定的精度
COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS
PCT_MERMA 3 NUMBER 2 0 2
如果我尝试使用十进制数字,也会发生这种情况。
知道为什么吗?
【问题讨论】:
如果您试图将值限制在某个范围或特定整数内,最好使用check constraint。 【参考方案1】:对于数据类型number(2,2)
,您不能使用大于 1 的数字进行更新,因为第一个参数是数字中的总位数,第二个参数(此处为 2)是小数部分。我猜你可以插入或更新数据< 1
。即 0.12、0.95 等。
请检查NUMBER Datatype中的NUMBER DATATYPE。
【讨论】:
【参考方案2】:NUMBER (precision, scale)
表示precision
的总位数,其中scale
位数在小数点右边。
NUMBER(2,2)
换句话说就是一个有 2 位数字的数字,这两个数字都是小数。您可能的意思是使用NUMBER(4,2)
来获得4 位数字,其中2 位是小数。目前您可以只插入零整数部分的值。
More info at the Oracle docs.
【讨论】:
以上是关于插入 3 时出现“ORA-01438: 值大于此列允许的指定精度”的主要内容,如果未能解决你的问题,请参考以下文章
错误:“ORA-01438:值大于此列允许的指定精度”故障因素:“空”详细信息:org.kxml2.kdom.Node@99c0b9c
通过 UCanAccess 插入时出现“强制转换的字符值无效”错误