mysql - 如何将 DECIMAL 插入 MySQL 数据库

标签 mysql database database-design decimal

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

(有人告诉我,这里的4是总金额,2是小数点后的金额,有人能把它清除一下吗旁注?)

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

我做错了什么导致这个?

这是 table :

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')

更新: 我将 4,2 更改为 6,2 后它可以工作

最佳答案

MySql 的十进制类型比小数点的左边和右边稍微复杂一些。

第一个参数是precision,即总位数。第二个参数是scale,它是小数点右边的最大位数。

因此,(4,2) 可以是从 -99.9999.99 的任何值。

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

编辑

根据 http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html 更正了对比例和精度使用的误解.

关于mysql - 如何将 DECIMAL 插入 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6999582/

相关文章:

javascript - 使用 document.getelementbyid 从 javascript 在 html 文档中创建表格

mysql - 什么是表前缀?

database - 数据库查询价格的方法

database - 为什么我的数据库表需要主键?

mysql - 我应该将图像路径存储在一个表中,还是根据图像类型存储在多个表中?

MySQL 2个查询组合成1个查询

php - 我需要将我的表单连接到数据库(我认为)

mysql - laravel5-如何隐藏withPivot的特定列?

php - PHP 的 Mysql 命令

php - Joomla 中的简单 "loop"