1. 程式人生 > >ORACLE中一個字元佔多少位元組?(中文儲存)

ORACLE中一個字元佔多少位元組?(中文儲存)

今天在oracle 10g下測試了下varchar2與nvarchar2這兩種型別,網上有很多關於這兩種型別的區別的帖子,我還是自己測試了下。

varchar2(size type),size最大為4000,type可為char或者byte,預設是byte。

varchar2最多存放4000位元組的資料,不管type是char還是byte。所以如果你設定varchar2(4000 char),你可以存入4000個字母,但是不能存入4000個漢字。如果資料庫字符集編碼是GBK,那麼varchar2最多能存放2000個漢字,如果字符集編碼是UTF-8,那麼則只能最多存放1333個漢字了。

nvarchar2(size),size最大值為2000,單位是字元,而且不管是漢字還是字母,每個字元的長度都是2個位元組。所以nvarchar2型別的資料最多能存放2000個漢字,也最多隻能存放2000個字母。並且nvarchar2不同於varchar2,他不受資料庫字符集的影響。

另外如果我們把A1,A2都設為varchar2(4000),並且這兩個欄位的內容長度都超過了2000位元組,那麼使用select A1||A2 from table這樣的語句時,因為結果超過了4000位元組,所以會報錯。