trim是消空格的方法,它返回一个消去前后空格的字符串,但是原字符串中间的
空格还给予保留。上边的那个例子,你把一个"    "用trim,返回给你的是一个空串,而不是null对"   aa    "用trim和对"   a  a   "用trim,结果是不同的,呵呵

解决方案 »

  1.   

    Hi!
    trim不是Oracle 的函数,如下:
    select trim('   aa     ') from dual; 在sql/plus中是不能用的,只能用
    ltrim或者rtrim 函数去掉左右空格,
    如下:
    select ltrim(rtrim('  aa ') From dual;
    你用select trim('   aa     ') from dual;时难道没有报
    数据猎无效吗?
      

  2.   

    declare
      aa  varchar2(10);
      bb  varchar2(10);
    begin
      aa := '         ';
      bb:=trim(aa);
    exception
      when others then
        exception work;
    end;
      

  3.   

    以前遇到过同样的问题,在8.1.5版本不会出现问题.在8.1.6版本当中如果是在PL/SQL块当中,trim('')或trim('  ')就会出现你所说的通信管道结束的问题.不知你用的是那个版本.
      

  4.   

    trim 是oracle的一个函数。但是很多手册上都没有它的使用说明。
    另外我的版本是8.1.6
    之前我使用这个函数好像没有在意此类问题,无意间发现,拿出来和大家探讨一下!
      

  5.   

    这个问题可以这样解决:
       TRIM (LEADING ' ' FROM '     ')
      

  6.   

    在使用trim时一定要注意trim的字段不能为空,否则可能会使程序死掉或者出错。你可以用
    nvl(字段,0)然后trim试试!
      

  7.   

    可是在8.16中,怎么用trim会出错呢?
    所以都不得不用ltrim和rtrim代替
      

  8.   

    我的版本是8.17  select trim('       ') 到没什么错, 不过再pl/sql 中 trim('') 一样死掉了,