char ,varchar,nchar與nvarchar的區別

在用SQL Server 2008時遇到一些相似的數據類型,經過本人的一番小結得出以下:

char:
對英文(ASCII)字符佔用1個字節,對一個漢字字符佔用2個字節,CHAR存儲定長數據很方便,CHAR字段上的索引效率級高,比如定義char(10),那麼不論你存儲的數據是否達到了10個字節,都要佔去10個字節的空間(未填滿的用空格填注)。由於是固定長度,所以速度效率高。 
varchar

varchar 的類型是數據有多長放多長(在有效值內),例如varchar(10),輸入數據是"Name",則它的值還是"Name",而char 則不同,比如char(10),它的值是"Name",而實際上它在數據庫中是"Name      "(Name後有6個空格,填滿爲10個字節)。 還有當我們在判斷一些等值時,容易犯這種錯誤。例如在判斷 "admin     "(char(10)類型)=="admin"(varchar(10)類型) ,這時就很容易出錯,應用varchar就可避免。所以如果輸入的數據正好是10的時候,最好用char(10),若其他用varchar或者nvarchar(含有中文時)。

——————————————————————————————————————————————————————————————————

 由於char的長度是固定的,所以它的速度會比varchar快得多!但程序處理起來要麻煩一點,要用trim之類的函數把兩邊的空格去掉。
       varchar存儲長度不確定數據,但存儲效率沒有CHAR高。如果一個字段可能的值是不固定長度的,我們只知道它不可能超過10個字符,把它定義爲 varchar(10)是最合算的。

        varchar類型的實際長度是它的值的實際長度+1。爲什麼“+1”呢?這一個字節用於保存實際使用了多大的長度。

        Nchar類型和Nvarchar類型是怎麼一回事呢?爲了與其他多種字符的轉換,如中文,音標等,對每個英文(ASCII)字符都佔用2個字節,對一個漢字也佔用兩個字節,所有的字符都佔用2個字節。

例如

varchar(n):變長型字符數據類型,存儲最長長度爲8,000 個字符。

例如:
insert a select ’中國c‘    ----------   存儲長度爲5個字節,餘下的3個字節全部釋放
insert a select '中國人' ----------   存儲長度爲6個字節,餘下的2個字節全部釋放
這說明varchar變長字符數據類型與存儲數據的實際長度是一致的

nvarchar(n):

可變長度 Unicode 數據,其最大長度爲 4,000 字符。
字節的存儲大小是所輸入字符個數的兩倍,就是說它是雙字節來存儲數據的。
如果存儲數據如果存在單字節時,它也是以雙字節來佔用存儲空間的。

varchar一般適用於英文和數字,nvarchar適用中文和其他字符,其中n表示Unicode常量,可以解決多語言字符集之間的轉換問題。

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