自己写函数:
  create or repalce pvInstr(avFld in varchar2)
  return number
  is 
     lvLen     number(3);
     lvNum     number(3);
     lvChar    char(1)
  begin
     lvLen :=length(avfld);
     for lvNum 1..lvLen loop
         lvChar :=substr(avFld,lvNum,1)
         if ascii(lvChar) < 58 and ascii(lvChar) > 47 then
             return lvNum;
         end;
     end loop;
  end;  select pvInstr(fld) from tbl;

解决方案 »

  1.   

    lianhg(lianhg) 的实现方法是将串里面的数字返回了!不过,按照这种思路,泥就可以取出里面的字符了~
      

  2.   

    to shuipipi(水皮皮)  :
       呵呵,我也觉得不太好
      

  3.   

    从左边找,当发现数字时就end loop并得到当前数字的位置,就可以得到了
      

  4.   

    [email protected] >select substr('lg1020',1,instr(translate('lg1020','0123456789','0'),'0')-1) from dual;SU
    --
    lg
      

  5.   

    呵呵,感谢大家,能不能不用存储过程呢!直接就在sql里无法实现吗?
      

  6.   

    create function get_num(p_code in varchar2)
    return varchar2
    as
    num number;
    begin
    for i in 1..length(p_code) loop
    if substr(p_code,i,1) in (0,1,2,3,4,5,6,7,8,9) then
    return substr(p_code,1,i-1);
    end if;
    end loop;
    return p_code;
    end;
    /
      

  7.   

    受 l2g32003(leeshow) 的启发。成功了!代码如下:select substr(code,1, instr(translate(code,'0123456789','0000000000'),'0',1)-1 ) from Table1结账!