Navicat 博客

在数据库中存储格式化的字段 2020 年 8 月 20 日,由 Robert Gravelle 撰写

关于将格式化的字段存储在数据库中,格言“存储原始,显示漂亮”通常成立。 在大多数情况下,原始值最有利于在数据库中进行操作,从而可以查询、排序、比较原始数据以及你拥有的数据。但是,有时你可能希望保留特殊字符,这些字符对于格式化至关重要,例如 HTML 标记。在今天的文章中,我们将使用 Navicat Premium 以及一些示例来探讨这两个选项。

分析特殊字符

考虑一个存储电话号码的字段,仅在北美,电话号码就可以以许多不同的格式表示,包括“(800) 555-1212”、“800-555-1212”、“800 555-1212”或“8005551212”。如要存储短变量数据(例如电话号码),通常最好在存储到数据库之前在应用程序层去除特殊(非数字)字符。该应用程序还将负责以预定的显示格式显示电话号码。如果你担心所有这些数据解析和格式化会给服务器带来不必要的压力,请放心,格式化电话号码的处理器开销微不足道,实际花费的时间不到一微秒。

数据类型注意事项

有人认为电话号码之类的数字数据适合使用 int 或 bigint 之类的数字数据类型。话虽如此,大多数 DBA 会选择 char 或 varchar 类型而不是数字类型,因为非数字字符在电话号码中可以是有效的。一个典型的例子是在国际号码开头可以用 + 代替 00。

为了证明这一点,我們可使用 Sakila 示例数据库。在示例数据库的 address 表中你可找到一个电话号码列。以下是它在 Navicat Premium 的表设计器中的画面:

address_table_design (145K)

在这个表中,phone 字段的长度为 20,以便容纳各种电话号码。快速浏览一下表格内容,就会发现电话号码长度的变化:

address_table (226K)

关于 varchar 字段的好处是,如果你需要增加列的容量,则可以使用 ALTER TABLE 语句或简单地通过更改 Navicat 中的長度属性来轻松地做到这一点。

保留较长字段的格式

对于包含自由格式用户输入的较长字段,例如描述,你可能会发现最好将它们存储在包含所有特殊字符的 varchar 或 text 列中,因为将无法在以后显示时重新格式化它们。

在 Navicat 中查看自由格式的内容

多行的内容可能很难处理,因为在典型的“网格”视图中每条记录仅显示一行:

film_table_in_grid_view (229K)

Navicat 提供了几种查看较长字段的方法:

表单视图

表单视图让你以表单形式查看、更新、插入或删除数据。在表单中,按字段名称及其值显示当前记录。表单视图还提供以下附加功能的弹出菜单:

  • 将字段值设置为 Null 或空白字符串
  • 使用当前字段值作为筛选
  • 格式化表单视图
film_table_in_form_view (94K)

文本编辑

Navicat 提供了文本、十六进制、图像或网页下拉菜单来查看和编辑 TEXT、BLOB、BFile 或 HTML 字段内容。若要启用查看或编辑数据类型的功能,请从下拉列表中选择类型,并将其切换到 ON 状态。如果是 TEXT,你将看到一个编辑器出现在表网格的底部:

text_editing (69K)

总结

在今天的文章中,我们学习了如何使用 Navicat Premium 存储格式化的数据。

如果你对 Navicat Premium 感兴趣,可以免费试用 14 天!

Navicat 文章
频道条目
分享
文章归档