今天在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字節,所以會報錯。