CHAR char是定長的,在欄位建立時,空間就固定了,不管是否插入值(NULL也包含在內),都占用字元的空間。例如: char(8),輸入字元小於8,後面補空值。輸入字元大於8時,會截取。CHAR存儲定長數據(英文或數字)很方便,CHAR欄位上的索引效率級高。 VARCHAR (n) 可變長且非 ...
CHAR
char是定長的,在欄位建立時,空間就固定了,不管是否插入值(NULL也包含在內),都占用字元的空間。例如: char(8),輸入字元小於8,後面補空值。輸入字元大於8時,會截取。CHAR存儲定長數據(英文或數字)很方便,CHAR欄位上的索引效率級高。
VARCHAR (n)
可變長且非 Unicode 的字元數據,存儲效率沒有char高。n介於 1 和 8,000 之間。輸入的數據字元長度可以為零。VARCHAR類型的實際長度是它的值的實際長度+1。這一個位元組用於保存實際使用了多大的長度。
從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。
NVARCHAR (n)
可變長度 Unicode 字元數據。n介於 1 與 4,000 之間。位元組的存儲大小是所輸入字元個數的兩倍。所輸入的數據字元長度可以為零。
TEXT
text存儲可變長度的非Unicode數據,最大長度為2^31-1(2,147,483,647)個字元。
總結
NCHAR、NVARCHAR、NTEXT。 “N”表示存儲的是Unicode數據類型的字元。我們知道英文字元只需要一個位元組存儲就足夠了,但漢字需要兩個位元組存儲,英文與漢字同時存在時容易造成混亂,Unicode字元集就是為瞭解決字元集這種不相容的問題而產生的。
所以一般來說,如果含有中文字元,用nchar/nvarchar,如果純英文和數字,用char/varchar。