参考地址
https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch7progrunicode.htm#sthref807
英语不好的看中文直译
utf8可能会影响性能,因为它是一个可变宽度字符集。NChar字段的空白填充过多会降低性能。考虑使用nvarchar数据类型或更改为nchar数据类型的al16utf16字符集。
nvarchar2数据类型指定使用国家字符集的可变长度字符串。使用nvarchar2列创建表时,请指定该列的最大字符数。nvarchar2的长度总是以字符为单位,就像nchar一样。如果值不超过列的最大长度,Oracle随后会按照您指定的方式在列中存储每个值。Oracle不会将字符串值填充到最大长度。
当国家字符集为utf8时,允许的最大列大小为4000个字符;当国家字符集为al16utf16时,允许的最大列大小为2000个字符。nvarchar2列的最大字节长度为4000。必须同时满足字节限制和字符限制,因此nvarchar2列中实际允许的最大字符数是可以用4000字节写入的字符数。
在pl/sql中,nvarchar2变量的最大长度为32767字节。您可以定义最多32767个字符的nvarchar2变量,但实际数据不能超过32767个字节。
此数据类型保存字符的数量要看数据库的国家字符集是什么?
select userenv(‘language’) from dual;
AMERICAN_AMERICA.AL32UTF8
如下:当前的数据库国家字符集,一个中文3个字节,一个英文占1个字节。
PS:对于一些生僻字可能与上述情况不一致,请另行处理。
其它:如果显示如下,一个汉字占用两个字节
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
name 类型是:nvarchar2(4);
如下:一个中文是一个字符,一个英文一个字符,总共最多4个字符。