用于长数字的MySQL字段类型
如果我在MySQL表中将一个字段设置为用于长数字的MySQL字段类型,mysql,sqldatatypes,Mysql,Sqldatatypes,如果我在MySQL表中将一个字段设置为INT,那么我在其中存储的数字将删除所有零。 例如,如果我有一个像100007431431552这样的Id,它最终将保存为17431431552。 字段选项为长度为32的INT。那有什么问题 有什么建议吗?谢谢。100007431431552对于INT来说太大了 如果在严格模式下运行,则会出现错误(数据截断:列“id”的值超出范围) 不幸的是,MySQL的默认行为是避免任何错误消息,并尝试执行其他操作—代价是在不告诉您的情况下丢失数据(这就是示例中存储的17
INT
,那么我在其中存储的数字将删除所有零。例如,如果我有一个像100007431431552这样的Id,它最终将保存为17431431552。
字段选项为长度为32的
INT
。那有什么问题
有什么建议吗?谢谢。
100007431431552
对于INT
来说太大了
如果在严格模式下运行,则会出现错误(数据截断:列“id”的值超出范围
)
不幸的是,MySQL的默认行为是避免任何错误消息,并尝试执行其他操作—代价是在不告诉您的情况下丢失数据(这就是示例中存储的17431431552
)
对于此类值,需要使用bigint
:
SQLFIDLE:
100007431431552
对于INT
来说太大
如果在严格模式下运行,则会出现错误(数据截断:列“id”的值超出范围
)
不幸的是,MySQL的默认行为是避免任何错误消息,并尝试执行其他操作—代价是在不告诉您的情况下丢失数据(这就是示例中存储的17431431552
)
对于此类值,需要使用bigint
:
SQLFiddle:MySQL手册中说INT类型的最大值是2147483647(有符号)和4294967295(无符号)。BIGINT类型的最大值为9223372036854775807(有符号)和18446744073709551615(无符号)。因此您应该使用BIGINT列类型。MySQL手册中说INT类型的最大值是2147483647(有符号)和4294967295(无符号)。BIGINT类型的最大值为9223372036854775807(有符号)和18446744073709551615(无符号)。因此,您应该使用BIGINT列类型。from 您不能用
INT TYPE
选择这么大的数字 来自
您不能用
INT TYPE
选择这么大的数字 看起来您正在存储FB ID,请改用varchar(20)
。只有0007的值会转换为7的整数,删除0后,10007将保留为10007;)好的,我看到了INT存储2147483647的最大值和-2147483647的最小值的问题。我现在有“BIGINT”,但对于优化,我认为可以优化更多的速度。因此,考虑到速度,最好将这些ID存储在VARCHAR 20 als BIGINT中?看起来您正在存储FB ID,请改用VARCHAR(20)
。只有0007的值才会转换为7,去掉0,10007将保持10007;)好的,我看到了INT存储2147483647的最大值和-2147483647的最小值的问题。我现在有“BIGINT”,但对于优化,我认为可以优化更多的速度。所以,考虑到速度,最好将这些ID存储在VARCHAR 20 als BIGINT中?谢谢你们,这将帮助我@onbids:您应该将MySQL安装配置为以严格模式(和ANSI模式)运行,以禁用一些愚蠢的默认行为(例如截断数据而不是抛出错误)。详见手册:谢谢大家,这对我有帮助@onbids:您应该将MySQL安装配置为以严格模式(和ANSI模式)运行,以禁用一些愚蠢的默认行为(例如截断数据而不是抛出错误)。详见手册:谢谢大家,这对我有帮助!谢谢你们,这对我有帮助!谢谢你们,这对我有帮助!谢谢你们,这对我有帮助!
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