如果我在MySQL表中将字段设置为INT
,那么我存储的数字将删除所有零。
例如,如果我有一个类似这样的Id 100007431431552,它最终会被保存为17431431552.
字段选项为INT
,长度为32.那么问题是什么?
有什么建议吗?谢谢。
答案 0 :(得分:1)
100007431431552
对于INT
来说太大了。
如果您在严格模式下运行,则会收到错误(Data truncation: Out of range value for column 'id'
)。
不幸的是,MySQL的默认行为是避免任何错误消息并尝试做其他事情 - 代价是丢失数据而不告诉你(这就是为什么17431431552
存储在你的例子中。)
对于此类值,您需要使用bigint
:
SQLFiddle:http://sqlfiddle.com/#!2/19505/1
答案 1 :(得分:1)
MySQL手册说INT类型的最大值是2147483647(已签名)和4294967295(无符号)。与BIGINT类型相关的最大值为9223372036854775807(已签名)和18446744073709551615(无符号)。所以你应该使用BIGINT列类型。
答案 2 :(得分:1)
Type Storage Minimum Value Maximum Value
(Bytes) (Signed/Unsigned) Signed/Unsigned)
TINYINT 1 -128 127
0 255
SMALLINT 2 -32768 32767
0 65535
MEDIUMINT 3 -8388608 8388607
0 16777215
INT 4 -2147483648 2147483647
0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
0 18446744073709551615
你不能用INT TYPE
来代表这么大的数字。