我使用的是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(