Мне не удалось исправить этот случай даже после просмотра многих потоков.
У меня есть столбец десятичной дроби (8,4) и таблица данных, содержащая 4 случая, которые являются линией пути и превышают верхний предел. Все в порядке. У меня есть скрипт импорта, где производительность не имеет значения, он будет использоваться максимум ~ 20 раз.
Я пытался решить проблему многими способами, например (этот код является частью инструкции SELECT):
CASE WHEN PRT.InputColumn > 999 THEN 999.9999 ELSE PRT.InputColumn END as MyColumn
Но, по-видимому, сервер вычисляет десятичное число (8,4) при оценке оператора WHEN и в любом случае выдает ошибку. Хорошо, я думал, что это может решить проблему:
CASE WHEN TRY_CONVERT(decimal(12,4), PRT.InputColumn) IS NULL THEN 999.9999 ELSE PRT.InputColumn END as MyColumn
Но все равно я получаю ту же ошибку:
Arithmetic overflow error converting numeric to data type numeric.
Так что я хочу сохранить тип данных columnd как есть и обрабатывать чрезмерные значения. Как правильно обработать переполненные значения ?