有一种古老的数据库格言说:“原始存储,漂亮地显示。” 关于存储,这意味着数据应该以最佳格式存储,以便在数据库中使用,即搜索,排序,比较等。为说明起见,让我们以存储电话号码的字段为例。在北美,这里的电话号码可以用许多不同的格式表示,包括“(800)555-1212”,“ 800-555-1212”,“ 800 555-1212”或“ 8005551212”。在我研究过的应用程序中,我们将在存储到数据库之前在应用程序级别去除特殊字符。然后,我们将电话号码格式化为正式格式以进行显示。
在这种情况下,格式化电话号码的处理器开销是微不足道的,生产所需的时间不到一微秒。
至于使用哪种数据类型,有人认为电话号码适合使用数字类型。但是,我认为char或varchar会更好,因为非数字字符可以在电话号码中有效。一个典型的例子是在国际号码开头以+代替00。
例如,这是我的Navicat DB客户端中地址表的设计 包含电话专栏:
您会看到它是一个长度为20的varchar。它应该足够大以容纳您可能想要保留的任何电话号码。此外,如果您需要增加列的容量,则可以使用ALTER TABLE语句(或仅通过更改Navicat中的Length)来轻松地做到这一点。
以下是地址表的几行,这些行的电话号码长度不同:
对于包含格式化用户输入的较长字段(例如描述),我会将它们存储在包含所有特殊字符的varchar或text列中,因为无法重新格式化它们以供以后显示。
这是一张表的一条记录,该表在Navicat的“表单视图”中包含一个描述字段:
该描述以文本类型存储,因此它可以包含用户希望输入的尽可能多的信息。
这是“网格”视图中的相同记录。要查看该视图中的所有数据,我们可以为数据下拉菜单选择文本选项以查看所有格式:
希望对您有所帮助。
如果觉得《您应该如何在数据库(Java MySQL和开发)中存储格式化的字段?》对你有帮助,请点赞、收藏,并留下你的观点哦!