varchar2(byte) 存儲的是字節。數據庫
varchar2(char) 存儲的是字符。spa
varchar2(2 byte) 最多能夠存儲2個字節,varchar2(2 char) 最多能夠存儲2個字符。io
當數據庫字符集分別:select
1.爲 AL32UTF8 時,1個漢字是1個字符,1個漢字佔3個字節,varchar2(2 byte) 一個漢字也不能存,varchar2(2 char) 能存2個漢字。數據類型
2.爲 ZHS16GBK時,1個漢字是1個字符,1個漢字佔2個字節,varchar2(2 byte) 能存1個漢字,varchar2(2 char) 能存2個漢字。數據
默認狀況下,在指定數據類型爲 varchar2(2) 時是什麼狀況呢?這跟數據庫中的一個參數有關: NLS_LENGTH_SEMANTICSant
select name,value from v$parameter where name='nls_length_semantics';字符集
NAME VALUE
------------------------------ ------------------------------
nls_length_semantics BYTEco
若是該參數的值爲 byte ,則 varchar2(2) 等同於 varchar2(2 byte),這是默認狀況。block