天天看點

char varchar nvarchar 差別

  char類型: 對英文(ASCII)字元占用1個位元組,對一個漢字占用2個位元組,CHAR存儲定長資料很友善,CHAR字段上的索引效率級高,比如定義char(10),那麼不論你存儲的資料是否達到了10個位元組,都要占去10個位元組的空間。因為是固定長度,是以速度效率高。

        Varchar類型:Varchar 的類型不以空格填滿,比如varchar(100),但它的值隻是"qian",則它的值就是"qian"

而char 不一樣,比如char(100),它的值是"qian",而實際上它在資料庫中是"qian "(qian後共有96個空格,就是把它填滿為100個位元組)。

        由于char是以固定長度的,是以它的速度會比varchar快得多!但程式處理起來要麻煩一點,要用trim之類的函數把兩邊的空格去掉!

        VARCHAR存儲變長資料,但存儲效率沒有CHAR高。如果一個字段可能的值是不固定長度的,我們隻知道它不可能超過10個字元,把它定義為 VARCHAR(10)是最合算的。VARCHAR類型的實際長度是它的值的實際長度+1。為什麼“+1”呢?這一個位元組用于儲存實際使用了多大的長度。

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

例如

varchar(n):變長型字元資料類型,存儲最長長度為8,000 個字元。

舉個例子:

insert a select '木子a'

--- 存儲長度為5個位元組,餘下的3個位元組全部釋放

insert a select '木神易

----存儲長度為6個位元組,餘下的2個位元組全部釋放

---意思是varchar變長字元資料類型與存儲資料的實際長度是一緻的

nvarchar(n):可變長度 Unicode 資料,其最大長度為 4,000 字元。

位元組的存儲大小是所輸入字元個數的兩倍,

就是說它是雙位元組來存儲資料的。

如果存儲資料如果存在單位元組時,它也是以雙位元組來占用存儲空間的。

varchar一般适用于英文和數字,Nvarchar适用中文和其他字元,其中N表示Unicode常量,可以解決多語言字元集之間的轉換問題

from:http://hi.baidu.com/yangreat/blog/item/486e68ec5499b1db2f2e218d.html

繼續閱讀