При запуске этого теста в MySQL 5.6:
create table t(
deci decimal,
deci4 decimal(4),
deci40 decimal(4,0),
deci42 decimal(4,2)
);
insert into t(deci, deci4, deci40, deci42)
values
(1234.1234,1234.1234,1234.1234,1234.1234);
Вставка завершается неудачно, потому что 1234.1234 не помещается в (4,2)
insert into t(deci, deci4, deci40, deci42)
values
(1234.1234,1234.1234,1234.1234,34.1234);
Запускается со следующими вставленными значениями:
deci deci4 deci40 deci42
1234 1234 1234 34.12
В DECIMAL(M,N)
, M - это количество мест, которое может занять число, включая десятичные дроби, N - количество десятичных знаков.Максимальное значение для M равно 65, а максимальное значение для N равно 30. N должно быть меньше, чем M.
Если N=0
, то это 0
десятичных знаков.
Если N равноне определено, кажется, что десятичные разряды определяются числом мест, фактически занятых целой частью числа, которое меньше, чем M, а остальные места, оставленные для десятичных знаков, по мере необходимости.
Если ни один из них не определен, то по умолчанию M
устанавливается на 10
.
Информация о значениях по умолчанию, взятых отсюда: http://www.mysqltutorial.org/mysql-decimal/