mysql数据类型为数字最大字符长度19精度17

时间:2018-02-01 19:25:08

标签: mysql sqldatatypes

想知道是否有人可以帮我解决mysql的数据类型问题。我希望能够加载最大字符长度为19但最大精度为17的数字(小数点后可以有17位数)。我尝试过使用float(19,17)和decimal(19,17),但是当我尝试加载一个像02.11111111112222222这样的数字时,它不会捕获完整的数字。提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用小数

select sum(qty), SUM(CASE WHEN date_added < CURDATE() THEN qty ELSE 0 END) 
from inventory_movement 
where dated_added <= CURDATE() 
GROUP BY cat_id

https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html

答案 1 :(得分:0)

Mysql将此值存储为2.11111111112222222,即不带前导0。

检查mysql文档的十进制类型,它说: DECIMAL列不存储前导+字符或 - 字符或前导0位数。如果将+0003.1插入DECIMAL(5,1)列,则将其存储为3.1。对于负数,不存储文字字符。

前导0大小写适用于您的值,而mysql不存储它。因此,您将2.11111111112222222存储在表格中。

检查https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html

如果你想存储前导零,也可以在数据类型之后包含UNSIGNED ZEROFILL更改定义:

CREATE TABLE your_table ( your_column DECIMAL(19,17) UNSIGNED ZEROFILL );

请注意:

  1. 如果您输入2.11111111112222222,您将获得零填充以使小数点前的数字计数为19-17并获得02.11111111112222222

  2. 如果您输入02.111111111122222,您将获得零填充,以使小数点后的数字计数为17。