我正在做一个大学项目,有一个表格来存储手机号码。最近我发现一个10位数的电话号码(没有+/-)不能存储在长度为10的整数数据类型中,为什么会这样呢?
不幸的是,一个9位数的电话号码可以被存储,没有任何问题。最后,我将数据类型更改为VARCHAR。但我还是对整数很好奇。毕竟只有10位整数。
发布于 2022-07-22 16:55:32
mysql中的INT数据类型并不取决于整数的长度,而是可以用4个字节存储的最大值和最小值。另外,应该注意的是,您可以使用有符号INT或无符号INT,这也会影响max和min值。
例如,有符号的INT可以存储从-2147483648到2147483648之间的值,而无符号INT可以存储0到4294967295之间的值。这两个选项都不能存储一个10位数的电话号码。
但是,您可以使用一个BIGINT,它使用8字节的数据来存储其值,允许使用更高的min和最大值。但是VARCHAR可能会为您提供更好的服务,因为电话号码并不是真正的整数。例如,电话号码0012345678将作为12345678存储在INT字段中,然后在显示之前必须对数据执行格式转换。
发布于 2022-07-22 16:54:39
要存储移动号码,您应该在MYSQL中使用BIGINT数据类型,因为10位移动数字超过INT数据类型的范围,因为INT只需要4个字节,从0到4,294,967,295 (无符号INT)不等,这不足以存储10位数字的移动号码。BIGINT (8个字节)可以轻松地存储它,因为它的范围为0到18,446,744,073,709,551,615 (未签名的BIGINT)
https://stackoverflow.com/questions/73083597
复制相似问题