作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个包含一些字段的数据库表,其中一个 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.99
到 99.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/
我是一名优秀的程序员,十分优秀!