MySQL字段类型为长数字

时间:2013-03-30 10:34:14

标签: mysql sqldatatypes

如果我在MySQL表中将字段设置为INT,那么我存储的数字将删除所有零。
例如,如果我有一个类似这样的Id 100007431431552,它最终会被保存为17431431552.
字段选项为INT,长度为32.那么问题是什么?

有什么建议吗?谢谢。

3 个答案:

答案 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)

来自mysql.com

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来代表这么大的数字。