天天看點

oracle nvarchar2 substr,關于oracle中varchar2與nvarchar2的一點認識 - Qxun_dream

今天在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位元組,是以會報錯。