#html #decimal #overflow #numeric
#HTML #десятичный #переполнение #числовой
Вопрос:
У меня есть столбец с типом numeric(18,3)
данных. Пользователь также может вводить десятичные числа. Я установил максимальную длину этого текстового поля равной 18, но когда я набираю 77777777777777777777, я получаю эту ошибку
Ошибка арифметического переполнения при преобразовании varchar в тип данных numeric
Может кто-нибудь объяснить мне, почему я получаю эту ошибку?
Комментарии:
1. Пожалуйста, укажите фактический код SQL, который вызвал эту ошибку.
2. Потому
numeric(18,3)
что означает: всего 18 цифр , из них 3 после десятичной точки — таким образом, вы получаете только 15 цифр до десятичной точки. Ввод 18 цифр (до десятичной запятой), очевидно, приведет к переполнению! Если вам действительно нужны 18 цифр до десятичной запятой, вам нужно определить свой столбец какnumeric(21,3)
…. — прочитайте потрясающие документы3. @TimBiegeleisen ИЗМЕНИТЬ ИМЯ ТАБЛИЦЫ ИЗМЕНИТЬ минимальное значение СТОЛБЦА числовое (18,3)
Ответ №1:
Потому numeric(18,3)
что означает: всего 18 цифр, из них 3 после десятичной точки — таким образом, вы получаете только 15 цифр до десятичной точки.
Ввод 18 цифр (до десятичной запятой), очевидно, приведет к переполнению!
Если вам действительно нужно 18 цифр до десятичной запятой, вам нужно определить свой столбец как numeric(21,3)
ALTER TABLE dbo.TableName
ALTER COLUMN MinimumValue NUMERIC(21, 3)
Для получения более подробной информации ознакомьтесь с потрясающими документами
Комментарии:
1. Или я могу добавить атрибут maxlength и установить его равным 15, чтобы он не позволял пользователю вводить больше, чем это? @marc_s