1、CHAR和VARCHAR2类型的列最多可插入汉字为
如果数据库字符集为ZHS16GBK此类中文字符集数据库,则可插入汉子数字为:4000/2=2000个,单字节字符为4000个
如果数据库字符集为UTF8,则可插入单字节字符数为4000个,双字节字符数为:4000/2=2000个,三字节字符(汉字)为4000/3=1333个汉字+1个单字节字符
2、NLS_LENGTH_SEMANTICS参数对插入汉字的影响
如果NLS_LENGTH_SEMANTICS=CHAR且字符集为ZHS16GBK,那么CHAR和VARCHAR2定义的列长小于2000时,可插入的汉字数与定义长度相等
如果NLS_LENGTH_SEMANTICS=BYTE且字符集为ZHS16GBK,那么CHAR和VARCHAR2定义的列可插入的汉字数=定义长度/2
如果NLS_LENGTH_SEMANTICS=CHAR且字符集为UTF8,那么CHAR和VARCHAR2定义的列长小于1333时,可插入的汉字数与定义长度相等
如果NLS_LENGTH_SEMANTICS=BYTE且字符集为UTF8,那么CHAR和VARCHAR2定义的列可插入的汉字数=定义长度/3
查看字符集名称及ID的SQL:
nls_charset_name函数根据指定的指定的ID,返回对应的字符集名称。
NLS_CHARSET_ID是根据字符集名称返回对应的ID值。
with nls as ( select nls_charset_name(rownum) set_name,rownum id from dual connect by level <=100000) select * from nls where set_name is not null;