char、nchar、varchar、nvarchar 的區別

請看錶:

char(n) 定長 儲存ANSI字符 不足的補英文半角空格 索引效率高,程序裏面使用trim去除多餘空白 n必須是介於1和8000之間的數值,儲存大小爲n個字節
nchar(n) 定長 儲存Unicode字符 不足的補英文半角空格 處理unicode數據類型(所有的字符使用兩個字節表示) n必須是介於1和4000之間的數值,儲存大小爲n字節的兩倍
varchar(n) 變長 儲存ANSI字符 根據數據長度自動變化 效率沒char高  靈活 n必須是介於1和8000之間的數值,儲存大小爲輸入數據字節的實際長度,而不n個字節。
nvarchar(n) 變長 儲存Unicode字符 根據數據長度自動變化 處理unicode數據類型(所有的字符使用兩個字節表示) n的值必須介於1與4000之間。儲存大小爲n字節的兩倍。

技巧:

確定了存儲的數據長度,而且不包括中文,可以選擇char類型。

確定了存儲的數據長度,但可能包括中文,可以選擇nchar類型。

不確定存儲的數據長度,存儲只有英文、數字的最好用varchar。

不確定存儲的數據長度,也有可能有中文,可以選擇nvarchar類型。

如果還爲了這個糾結,就直接看看後面的概括吧。

一般如果用到中文或者其它特殊字符,我就會使用n開頭的類型,否則的話直接使用var開頭的。 

拓展:

Unicode是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案。

因爲計算機只能處理數字,如果要處理文本,就必須先把文本轉換爲數字才能處理。,0 - 255被用來表示大小寫英文字母、數字和一些符號,這個編碼表被稱爲ASCII編碼,比如大寫字母A的編碼是65,小寫字母z的編碼是122。

 如果要表示中文,顯然一個字節是不夠的,至少需要兩個字節,而且還不能和ASCII編碼衝突,所以,中國製定了GB2312編碼,用來把中文編進去。

Unicode字符集就是爲了解決字符集這種不兼容的問題而產生的,它所有的字符都用兩個字節表示,即英文字符也是用兩個字節表示

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章