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 文章
頻道記錄
分享
部落格封存檔