呵呵,回答我那个帖的吧?我还是觉得“立刻死臭”帖出来的代码好,所以给他分了:
下面是他的代码:
create or replace function f_countNumber(str  varchar2)
return  number  
is 
  f_tmp varchar2(1);
  f_pos integer:=1;
  f_count integer:=0;begin  while   f_pos <= length(str)  loop
     f_tmp := substr(str,f_pos,1);
     if  (f_tmp between '0' and  '9') then
         f_count := f_count + 1;
     end if;
     f_pos := f_pos + 1;
  end loop;
     return f_count;
end f_countNumber;

解决方案 »

  1.   

    08:55:36 SQL> desc tt;
     名称                                                  空?      类型
     ----------------------------------------------------- -------- ----------------
    --------------------
     A                                                              VARCHAR2(10)08:57:14 SQL> select * from tt;A
    ----------
    adfd12
    3213a已用时间:  00: 00: 00.00
    08:57:18 SQL> select translate(a,'a0123456789','a') from tt;TRANSLATE(A,'A012345
    --------------------
    adfd
    a已用时间:  00: 00: 00.15
      

  2.   

    to zmgowin(隐者(龙祖宗)) :
    --
    你的函数translate的源码呢?
      

  3.   

    得到字符串中数字第一次出现的位置
    18:15 SQL> select instr(translate('abc5wef9we','1234567890','          '),' ') pos from dual;    POS
    -------
          4得到字符串中数字总个数  
    18:39 SQL> select length('abc5wef9we')-length(replace(
    18:44   2  translate('abc5wef9we','1234567890','          '),' ','')) num from dual;    NUM
    -------
          218:49 SQL> 
    translate() replace()是oracle自带的函数
    详细信息查阅oracle文档。