Ошибка переполнения при вставке десятичной дроби в таблицу SQL

#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) или другое значение, основанное на вашем максимальном ожидаемом значении.