Oracle自动为你做的,length('')当然为0了。

解决方案 »

  1.   

    char占用空间长度已在设计表结构定义了长度,是不动态变动的,不会出现你那种情况!SQL> desc student;
    Name  Type         Nullable Default Comments 
    ----- ------------ -------- ------- -------- 
    ID    NUMBER       Y                         
    SNAME VARCHAR2(20) Y                         
    BOOK  VARCHAR2(20) Y                         
    FIRST CHAR(6)      Y        ' '   SQL> select nvl(first,'null') from student where rownum=1;NVL(FIRST,'NULL')
    -----------------           SQL> select length(first) from student where rownum=1;LENGTH(FIRST)
    -------------
    6SQL>  select nvl(book,'null') from student where rownum=1;NVL(BOOK,'NULL')
    --------------------
    nullSQL> select length(book) from student where rownum=1;LENGTH(BOOK)
    ------------
      

  2.   

    谢谢两位的解答,这个问题我已经查出来了,是由于在库中插入的值为'\0',也就是0对应的字符,在调用length函数时,oracle是按照字符串的类型计算的,所以输出的长度就是为零了