如何更改列的数据类型有很多数据存在 ( "Arithmetic overflow error converting numeric to data type numeric." )



我使用的是SQL Server 2014。如何改变列的数据类型有许多数据存在("将数字转换为数据类型数字的算术溢出错误"(

我的代码

字段price的旧数据类型为REAL。我希望它变成NUMERIC(10,4)。生产数据库有许多数据。

ALTER TABLE motor
ALTER COLUMN price NUMERIC(10,4);
Msg 8115, Level 16, State 8, Line 10
Arithmetic overflow error converting numeric to data type numeric.
The statement has been terminated.
Completion time: 2022-04-05T17:03:48.4602172+07:00

如何存档?

您需要识别不适合numeric(10,4)的行,并决定如何处理它们(修复值、删除值或选择更适合的类型(。

SELECT * FROM dbo.motor
WHERE price IS NOT NULL
AND TRY_CONVERT(numeric(10,4), price) IS NULL;

我们无法告诉您在场景中修复数据的最佳方法,但您肯定需要做出一些决定。你不能在一个背包里装400瓶啤酒,你要么需要减少啤酒的数量,要么买一个更大的容器。

为此,您需要增加括号((中存在的Numeric数据类型中的数字,因为您使用REAL类型的数据类型作为价格列,并且REAL型数据类型的大小为4字节。

例如数字(20.4(

相关内容