У меня есть таблица в MySQL с полем десятичной длины, длиной 9, без знака. Я использую его для цен.
После того, как я вставляю данные и запрашиваю их, он все округлен, и десятичная метка удалена.
Я в замешательстве, почему.
Советы по устранению неполадок?
Хост : web.com
Версия phpMyAdmin : 2.11.10.1
Версия клиента MySQL : 5.0.95
Десятичный тип в MySQL имеет две кнопки настройки: точность и масштаб. Вы опустили масштаб, поэтому он по умолчанию равен 0.
Синтаксис объявления для столбца DECIMAL – DECIMAL (M, D). Диапазоны значений аргументов в MySQL 5.1 следующие:
M – максимальное количество цифр (точность). Он имеет диапазон от 1 до 65. (Старые версии MySQL допускают диапазон от 1 до 254.)
D – количество цифр справа от десятичной точки (шкалы). Он имеет диапазон от 0 до 30 и должен быть не больше M.
mysql> create table test01 (field01 decimal(9)); Query OK, 0 rows affected (0.01 sec) mysql> insert into test01 (field01) values (123.456); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> select * from test01; +---------+ | field01 | +---------+ | 123 | +---------+ 1 row in set (0.00 sec) mysql> create table test02 (field01 decimal(9, 4)); Query OK, 0 rows affected (0.00 sec) mysql> insert into test02 (field01) values (123.456); Query OK, 1 row affected (0.01 sec) mysql> select * from test02; +----------+ | field01 | +----------+ | 123.4560 | +----------+ 1 row in set (0.00 sec)
Округление выполняется, потому что вы можете установить его тип данных как int
.
Измените его тип данных на double
OR Float
.
Это поможет вам.
РЕДАКТИРОВАТЬ
Если у вас есть datatype decimal
укажите его размер как это.
create table numbers (a decimal(10,2));
У меня такая же проблема. Оказывается, PHPMyAdmin игнорирует десятичное место, если вы введете и предположите, что оно равно 0. Используйте альтернативный запрос таблицы, чтобы изменить его. ALTER TABLE tablename
CHANGE rate
rate
DECIMAL (30,3) НЕОПРЕДЕЛЕН НЕ НУЛЛ;
Округление происходит, потому что вам нужно объявить точность в объявлении типа
create table test01 (field01 decimal(9,2));