为什么一个10位数的电话号码不能存储在长度为10的整数中



我正在做一个大学项目,该项目有一个存储手机号码的表格。最近我发现一个10位数的电话号码(没有+/-(不能存储在长度为10的整数的数据类型中。为什么会这样?

不幸的是,9位数字的电话号码可以毫无问题地存储。Atlast i将数据类型更改为VARCHAR。但我仍然对整数感到好奇。毕竟只有10位整数。

mysql中的INT数据类型不按整数的长度,而是按可以用4个字节存储的最大值和最小值。此外,需要注意的是,您可以具有SIGNED INT或UNSIGNED INT,这也会影响最大值和最小值。

例如,SIGNED INT可以存储-2147483648到2147483648之间的值,而UNSIGNED INT则可以存储0到4294967295之间的值。这两个选项都无法存储十位数的电话号码。

然而,您可以使用BIGINT,它使用8字节的数据来存储其值,从而允许更高的最小值和最大值。但VARCHAR可能会为您提供更好的服务,因为电话号码实际上不是整数。例如,电话号码0012345678将被存储为INT字段中的12345678,然后您必须在显示之前对数据进行格式化转换。

要存储手机号码,您应该在MYSQL中使用BIGINT数据类型,因为10位数字的手机号码超过了INT数据类型的范围,因为INT只需要4个字节,范围从0到4294967295(无符号INT(,这不足以存储10位数字手机号码。BIGINT(8字节(可以很容易地存储它,因为它的范围是从0到18446744073709551615(无符号BIGINT(

最新更新