N开头的列类型(如NCHAR, NVARCHAR2):任何字符(包括汉字)占2个字节,不受数据库字符集的影响。
非N开头的列类型(如CHAR, VARCHAR2):unicode字符(比如汉字)占3个字节,其他字符占1个字节。
字符串类型默认BYTE,即以字节为单位,如果为CHAR则表示以字符为单位。默认值取决于参数nls_length_semantics的值。当然也可以指定表的某一列使用字符为单位,如:username varchar2(400 char), 这样username这列就以字符为单位,可以保存400个字符。
varchar2和nvarchar2比较:
varchar2(size type):
size最大为4000,单位是字节。
如果你设置varchar2(4000 char),你可以存入4000个字母,但是不能存入4000个汉字。
如果数据库字符集编码是GBK,那么最多能存放2000个汉字,
如果数据库字符集编码是UTF-8,那么最多能存放1333个汉字。
nvarchar2(size):
size最大值为2000,单位是字符。
最多能存放2000个汉字,也最多只能存放2000个字母,任何字符(包括汉字)占2个字节,不受数据库字符集的影响。
Length 函数求得是占用字符数,lengthb或者vsize函数求得是占用字节数。