微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据类型:VARCHAR、INT 还是 BIGINT?

如何解决数据类型:VARCHAR、INT 还是 BIGINT?

您将如何处理带有分机的电话号码,例如“+1-000-000-0000 ext 1234”?

注意,“+”表示应使用国际拨号规则;所以来自北美,系统在国际电话前自动知道“011”等。

另外,诸如“1-800-DBA-HELP”之类的电话号码呢?

我通常会将电话号码存储为文本。话虽如此,这实际上取决于您的电话号码列的重要性。如果您正在从该列运行自动拨号程序,那么您确实希望确保仅包含数字,并且数据代表格式正确的电话号码。

您可以为分机和带有文本的电话号码设置单独的列,例如我提供的“1-800-DBA-HELP”示例。

解决方法

所以这将是今年的虚拟问题,但我需要问一下,因为这不是我第一次遇到这个问题。看一下下表定义:

在此处输入图像描述

看看现在的列from_numberVARCHAR(45)但它将包含一个电话号码。由于我不知道一部手机可以在全世界拥有多少个号码,所以我试图覆盖几乎所有的号码。我想尽可能地保持数据库的完整性,所以我认为VARCHAR不是保存此类信息的合适类型 - 你告诉我,也许我错了 - 所以我正在考虑更改INTBIGINT.

当我在 Workbench 中定义一个列时,我应该指定括号之间的数字,()而不是在所有情况下,但在我之前提到的那些情况下,我必须这样做。所以如果我这样做:BIGINT()我得到这个错误:

在此处输入图像描述

指导我在这里阅读一些关于这种 MySQL 类型的信息。基本上信息是这样的:

一个大整数。… 无符号范围是 0 到 18446744073709551615。

这让我问:当我定义一个BIGINT()类型时,我应该为括号设置什么值。(我使用 BIGINT 是因为我不知道 INT 是否可以容纳与电话一样多的数字——也许我也错了)。在 MariaDB/MySQL 数据库中创建|设计列的正确方法是什么?

无论如何,我想知道您的意见,经验,当然我想得到答案

注意:我正在使用 MySQL Workbench 最新版本来创建 ER 图。我也在使用 MariaDB 10.0.x

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。