У меня действительно просто вопрос о типе DECIMAL
(и, возможно, NUMERIC
) в SQL Server 2008 R2.
MSDN сказал:
(шкала) Максимальное количество десятичных цифр, которое можно сохранить справа от десятичной точки. Масштаб должен быть значением от 0 до p.
Я понимаю это следующим образом:
- Если у меня есть
DECIMAL(10, 5)
- я могу хранить 12345.12345 или 12345678.91. - если у меня есть
DECIMAL(5, 5)
- я могу иметь 12345 или 1234.5 или 1.2345 и т.д.
Ясно ли это?
Но я получил это сообщение об ошибке:
SELECT CAST(2.8514 AS DECIMAL(5,5))
Ошибка арифметического переполнения, преобразующая числовые данные в числовые данные.
Я думал, что 5,5 означает, что у меня может быть до 5 цифр и до 5 МОЖЕТ быть справа от десятичной точки.
Как я и пробовал:
SELECT CAST(12.851 AS DECIMAL(6,5)) - overflows too
однако
SELECT CAST(1.23456 AS DECIMAL(6,5)) - is OK.
Так какая правда?
DECIMAL(a,b)
говорит, что у меня может быть до цифр, а JUST b из них правы до десятичной точки (а остальное a-b слева до точки dec)?
Я действительно смущен выражением в документе, который копируется повсюду. Пожалуйста, уделите время и объясните мне эту простую вещь.
Большое спасибо!