程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> nchar,char,varchar 與nvarchar區別,ncharnvarchar

nchar,char,varchar 與nvarchar區別,ncharnvarchar

編輯:Oracle教程

nchar,char,varchar 與nvarchar區別,ncharnvarchar


 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常量,可以解決多語言字符集之間的轉換問題

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved