#sql #sql-server
#sql #sql-сервер
Вопрос:
Получение ошибки Arithmetic overflow error converting numeric to data type numeric.
в MS SQL. Вот таблица:
CREATE TABLE [Percentages]
(
[enabled] bit,
[name] nvarchar(150),
[percent] decimal(5,5)
)
И вот что я пытаюсь вставить:
INSERT INTO [Percentages] ([enabled], [name], [percent])
VALUES (1,'Test',2.0)
Если десятичное ограничение составляет от 00000.00000 до 99999.99999, то почему 2.0 выдает мне ошибку? «2» также выдает ту же ошибку
Комментарии:
1. (5,5) означает всего 5 цифр, и 5 из них в виде десятичных знаков. (Т.е. от -0.99999 до 0.99999.) Вы хотите
decimal(10,5)
.2. Приятно знать, спасибо! Не стесняйтесь добавлять это в качестве ответа
Ответ №1:
decimal(5,5)
означает всего 5 цифр, и 5 из них являются десятичными. (Т.е. от -0.99999 до 0.99999.)
Вы хотите decimal(10,5)
!
Ответ №2:
Десятичная дробь (5,5) изображает десятичную дробь (p, s), в которой s
это scale
, количество цифр вплоть до десятичной точки. p
— precision
общее количество цифр, которые должны быть сохранены в десятичной системе счисления. Вычитание s из p дает количество цифр слева от десятичной запятой.
В вашем случае — Десятичное число (5,5) допускает 0 цифр слева от десятичной точки. Следовательно, это выдает ошибку.
Попробуйте указать : decimal(10,5)
или другое значение, основанное на вашем максимальном ожидаемом значении.