首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么一个10位数的电话号码不能存储在长度为10的整数中?

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

Stack Overflow用户
提问于 2022-07-22 16:46:20
回答 2查看 174关注 0票数 2

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

不幸的是,一个9位数的电话号码可以被存储,没有任何问题。最后,我将数据类型更改为VARCHAR。但我还是对整数很好奇。毕竟只有10位整数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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字段中,然后在显示之前必须对数据执行格式转换。

票数 2
EN

Stack Overflow用户

发布于 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)

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73083597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档