看你数据库的字符集是什么,如果是UTF8,则varchar2 100 可存100个汉字。

解决方案 »

  1.   

    跟你的字符集有关,如果是GBK,会是100个
      

  2.   

    楼上的,GBK的和字符集也不能存100个汉字,我做过验证的。
      

  3.   

    与这个参数有关系吧:nls_length_semantics
      

  4.   

    SQL> select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET';VALUE
    --------------------------------------------------------------------------------
    AL32UTF8SQL> create table ss(ss varchar2(10));表已创建。SQL> insert into ss values('代数式地方大师傅');已创建 1 行。SQL> select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET';VALUE
    --------------------------------------------------------------------------------
    ZHS16GBKSQL> create table ss (ss varchar2(10));表已创建。SQL> insert into ss values('大撒法似的似的');
    insert into ss values('大撒法似的似的')
                *
    ERROR 位于第 1 行:
    ORA-01401: 插入的值对于列过大
      

  5.   

    SQL> create table ss (ss varchar2(10));表已创建。SQL> insert into ss values('大撒法似的似的');
    insert into ss values('大撒法似的似的')
                *
    ERROR 位于第 1 行:
    ORA-01401: 插入的值对于列过大=========================================================
    这个与nls_length_semantics的设置有关,因为其当前设置为byte需要改变一下建表时的定义,这么写:
    create table ss (ss varchar2(10 char));
    如果nls_length_semantics的值为char,则没有上述问题