情况是这样的,有一个cust表,表有个字段名为fax,字段中有很多数据,
fax
FAX-87053000
FAX-85250208
FAX-7083488
7074837(F)
FAX-8810004
FAX-5170062
88060687FAX
85304470(张
88060687FAX
等数据,现要求取只取数字的结果,即查询结果为:
87053000
85250208
7083488
8810004
5170062
88060687
85304470
88060687
我个人想法就是逐位取,ascii码判断判断是否在0到9的,有了就就取,没有就删除。这只是个思路,请各位朋友最好能够写出详细的存储过程,要是能用select语句实现就更好啦!

解决方案 »

  1.   

    select replace(translate(upper(fax),    'ABCDEFGHIJKLMNOPQRSTUVWXYZ','                          '),' ','') FROM cust;
      

  2.   

    这位朋友sasacat,好像你这种方法不能去掉括号()字符,以及汉字啊如张三,李四什么的
      

  3.   

    create table aaaa
    (a varchar2(100))insert into aaaa values('aaa-s1111(中国));declare 
    aa varchar2(100);
    bb varchar2(100);
    cc varchar2(100);
    dd varchar2(100);
    i number(10);
    begin
    select a into aa from aaaa;
    for i in 0..length(aa) loop
        bb:=substr(aa,i,1);
    dbms_output.put_line(bb);
        if(ascii(bb)>=48 and ascii(bb)<=57)then
           dd:=bb||dd;    end if;
    end loop;
    dbms_output.put_line(dd);
    end;