Как хранить десятичные числа в MySQL?
Я пробовал использовать DECIMAL с (2,2), но это не позволит мне использовать это.
Я просто хочу сохранить номер, например 7.50 или 10.50. Мне нужно сохранить оба числа после десятичного числа, но когда я обновляю базу данных, он сбрасывает значения до 0.99. Любые предложения?
Ответы
Ответ 1
Первая цифра объявления DECIMAL
- это общие цифры. Вероятно, вы хотите использовать DECIMAL (4, 2)
. Это позволяет до двух цифр до десятичного и двух после.
Документация: https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html
Ответ 2
Синтаксис ДЕСЯТИЧНЫЙ (M, D)
M - общая длина
D - цифры справа от десятичной точки
http://dev.mysql.com/doc/refman/5.6/en/fixed-point-types.html
Синтаксис объявления для столбца DECIMAL - DECIMAL (M, D). диапазоны значений для аргументов в MySQL 5.6 следующие:
М - максимальное количество цифр (точность). Имеет диапазон 1 до 65. (Старые версии MySQL допускали диапазон от 1 до 254.)
D - это число цифр справа от десятичной точки ( масштаб). Он имеет диапазон от 0 до 30 и должен быть не больше чем M.
Ответ 3
CREATE TABLE IF NOT EXISTS `table_name` (`id` int(11) NOT NULL AUTO_INCREMENT,`cost` DECIMAL( 10, 2 ) NOT NULL);
Это приведет к тому, что столбец затрат будет содержать в общей сложности 10 цифр, 8 до и 2 после десятичной точки.
Ответ 4
Из mysql doc:
Синтаксис объявления для столбца DECIMAL - DECIMAL (M, D). Диапазоны значений для аргументов следующие:
- M - максимальное количество цифр (точность). Он имеет ряд От 1 до 65.
- D - количество цифр справа от десятичной точки (шкалы). Он имеет диапазон от 0 до 30 и не должен превышать M.
NB: - M - нет. цифр до десятичной точки + общее число. цифр после десятичной точки.
В вашем случае 7.50
имеет общее количество не более 3 цифр, а 10.50
имеет общее число в 4 цифры. Но объявленный максимум нет. цифр для столбца равно 2, поэтому он может хранить максимум два знака. Вы даже не можете хранить 1, потому что он составляет 1.00, т.е. Всего 3 цифры. Таким образом, максимальное допустимое двузначное значение в столбце .99
.
Если вы хотите сохранить xx.xx, тогда вы должны объявить (4, 2), где 4 - M, а 2 - D.
Если вы хотите сохранить любое число с максимально допустимым размером mysql, вы можете объявить столбец с (65, 30).
Максимальный номер. цифр до десятичной точки = M - D
Ответ 5
CREATE TABLE `salary` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`salary` DECIMAL(10,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
DECIMAL(10,2)
указывает, что salary
будет содержать в общей сложности 10 цифр, из которых 2 будет после десятичного числа.
то есть.
8 цифр до десятичной и 2 цифры после десятичной.
Ответ 6
Измените свое поле с INT на FLOAT