char、varchar的區別
阿新 • • 發佈:2021-08-09
問題點歸納:
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的字元資料。