Я столкнулся с арифметическим переполнением в простом операторе SELECT. Запрос был как ниже, например
SELECT [SaleValue] FROM Sales
[SaleValue]был тип данных, decimal(9,0)а не вычисляемый столбец.
Причина этого состояла в том, что столбец каким-то образом имел строку, в которой в этом поле хранилось значение БОЛЬШЕ, чем указанный тип данных, например decimal(10,0).
Я мог заставить выбор работать, только когда увеличил размер столбца. У рассматриваемой таблицы есть два других экземпляра в двух других столбцах и строках.
Как это было возможно? Как изначально было сохранено значение вне диапазона в столбце?
Я использую сервер Microsoft SQL + это базовая таблица, а не представление.
decimal- a decimal(9,0)должен занимать 5 байт, decimal(10,0)9. Поэтому я думаю, что менее вероятно, что вы могли бы сделать это путем редактирования системных таблиц, поскольку у вас не будет правильный размер хранилища для данных в каждой строке.