一个字段想保存a、b、c之类的字符,所以定义成varchar2(1),可以正常插入,作为条件查询时也能返回记录,但该字段显示的值却是空。比如表名叫test,有两个字段,分别是sex,类型为varchar2(1)和name,类型是varchar2(10),用insert into test (sex,name) values('a','jobs'),insert into test (sex,name) values ('a','gas'),可以正常插入两条记录,用select * from test where (sex='a')也能返回两条记录,但sex那里显示出来的却是空。sex类型改成varchar2(2)就没这问题了。啥原因呢?

解决方案 »

  1.   

    无图无真相楼主把结果发出来看看create table test(sex varchar2(1),name varchar2(10));
    insert into test (sex,name) values('a','jobs');
    insert into test (sex,name) values ('a','gas');
    SQL> select * from test where (sex='a');
     
    SEX NAME
    --- ----------
    a   jobs
    a   gas
      

  2.   

    select table_name,column_name,data_type,data_length where table_name='TEST'。看看内容是否和预期的一样。 楼主不是测试了好几次,然后有好几个名称相似的表吧
      

  3.   

    原因找到了,低级错误,不小心定义成了nvarchar2