Обнаружена ошибка арифметического переполнения с использованием десятичного типа данных в SQL Server 2008 - PullRequest
3 голосов
/ 02 ноября 2011

У меня есть столбец, объявленный как десятичный (4,4). В настоящее время он хранит 0,0400 в качестве значения. Теперь мне нужно обновить значение с 0,0400 до 9,95. Я использовал следующий запрос:

Update <tablename>
set <columnname>= 9.95
where <condition>

Когда я пытаюсь выполнить, я получаю следующую ошибку: Ошибка арифметического переполнения при преобразовании числового значения в числовой тип данных. Заявление было прекращено.

Пожалуйста, помогите.

Ответы [ 3 ]

3 голосов
/ 02 ноября 2011

Определение столбца как decimal(4,4) эквивалентно высказыванию

У меня будет всего 4 цифры, из которых 4 идут после десятичной точки

Чтобы представить 9.95, вам нужно сохранить его как 9.9500, чтобы удовлетворить условию «4 десятичных знака». Но теперь оно превышает условие «максимум 4 цифры» и не может быть преобразовано.

Вам понадобится как минимум decimal(5, 4), чтобы таким образом хранить 9,95 в виде десятичной дроби.

1 голос
/ 05 октября 2012

У меня была похожая проблема несколько лет назад, вот мое понимание.

Decimal (TotalDigitsIncludingDecimal, DecimalPlaces)

Например: значение = 50.05, объявить десятичное число (4,2) Например: значение = 5000.0005 объявить десятичную (8,4)

1 голос
/ 02 ноября 2011

Если вы напишите decimal(4,4), то, что база данных услышит:

  • Всего четыре цифры
  • Все четыре из них находятся за десятичным разделителем

Таким образом, decimal(4,4) может хранить диапазон от 0.0000 до 0.9999 (и его отрицательный эквивалент).Но 9.95 находится вне этого диапазона, поэтому он выдаст ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...