1. 程式人生 > 其它 >char、varchar的區別

char、varchar的區別

問題點歸納:

sqlserver中,當欄位定義為char(2)時,表示儲存的值一定會佔用2字元,不夠的用空格代替。即當儲存的值是1時,實際儲存的值是'1 '(1+一個空格),這樣Delphi前臺程式碼若直接將此值AsInteger就會報錯!

知識點:

char的長度是不可變的,varchar的長度是可變的。

定義一個char(6),存'abc',所佔用的長度依然為6,除了'abc'外,後面還跟了3個空格。取資料時要用trim()去掉多餘的空格。

定義一個varchar(6),存'abc',所佔用的長度為3,不會有空格作填補,取資料不需要去空格。

由於char長度固定,方便程式的儲存與查詢,故存取速度要比varchar快得多,但是難免會有多餘的空格佔位符佔據空間,可謂是以空間換取時間效率。varchar則剛好相反,以時間換空間。

char 最多能存放的字元個數 255,和編碼無關。

varchar最多能存放 65532 個字元。varchar的最大有效長度由最大行大小和使用的字符集確定。整體最大長度是 65,532位元組。

char的儲存方式:對於一個英文字元(ASCII)佔用1個位元組,一個漢字佔用2個位元組。

varchar的儲存方式:對於每個英文字元、漢字都佔用2個位元組。

char、varchar的儲存資料都非unicode的字元資料。