我有一个包含一些字段的数据库表,其中一个字段cost被设置为DECIMAL数据类型.我将参数设置为4,2,它应该允许小数点前有4个数字,小数点之后有2个数字.

(有人告诉我,这里的4是总数,2是小数点后的金额,有人能在附注上澄清一下吗?)

当我通过POST请求插入数据时(例如,值3.80),存储到数据库的数据实际上是99.99.

我做错了什么导致这一切?

这是桌子:

CREATE TABLE IF NOT EXISTS `mytable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(256) NOT NULL,
`cost` decimal(4,2) NOT NULL,
PRIMARY KEY (`id`)
)

下面是我的添加查询:

INSERT INTO mytable (`id`,`title`,`cost`) 
VALUES (0, 'test title', '3.80')

更新: It works after I changed 4,2 to 6,2

推荐答案

MySQL小数类型比小数点的左边和右边稍微复杂一些.

第一个参数是precision,这是总位数.第二个参数是scale,它是小数点右侧的最大位数.

因此,(4,2)可以是-99.9999.99之间的任何值.

至于为什么你得到的是99.99而不是期望的3.80,你插入的值必须被解释为大于99.99,所以使用最大值.也许您可以发布用于插入或更新表的代码.

Edit

纠正了对刻度和精度使用的误解,每http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html个.

Database相关问答推荐

位置运算符($)工作不正确

第一次请求后数据库连接关闭

数据库 struct 建议

MySQL解释更新

如何允许多个用户同时连接到我的 H2 数据库?

寻找基于磁盘的类 redis 数据库

保存图像:文件还是 blob?

SQL查询7天前的数据

使用 java 查询 MySQL 数据库

将 XML 存储在数据库中是否不好?

将 Android Room 数据库与 Firebase 实时数据库相关联

表模块与域模型

您最喜欢在 django 中管理数据库迁移的解决方案是什么?

限制来自本地主机的 MySQL 连接以提高安全性

游戏中使用什么样的数据库?

Rails:'schema.rb' 中的版本号是否用于任何用途?

如何使用 JPA 注释创建连接表?

多个和单个索引

最小覆盖和功能依赖

PostgreSQL 的 EXPLAIN ANALYZE 的 MySQL 类似功能是什么