在VB里面可以,但是在oracle里面不知道.

解决方案 »

  1.   

    08:43:09 SQL> select instr('西风路2号',substr(replace(translate('西风路2号',repl
    ace(translate('西风路2号','0123456789',' '),' ',''),' '),' ',''),1,1)) from dual
    ;INSTR('西风路2号',SUBSTR(REPLACE(TRANSLATE('西风路2号',REPLACE(TRANSLATE('西风路
    2号','0123456789',''
    --------------------------------------------------------------------------------
    --------------------                   4已用时间:  00: 00: 00.16
      

  2.   

    zmgowin(隐者(龙祖宗))的想法是好的,但是半角的东西还很多比如字母等等!
    我觉得要写函数!
      

  3.   

    哦,我看错了,原来版主只要求,数字!SORRY!zmgowin(隐者(龙祖宗))
      

  4.   

    select instr(translate('西风路2号','0123456789','~~~~~~~~~~'),'~') from dual;
      

  5.   

    or:select instr(translate('西风路2号','0123456789','0'),'0') from dual;这样最好
      

  6.   

    SELECT INSTR(TRANSLATE('西风路2号','1234567890','0000000000'),'0') FROM DUAL;INSTR(TRANSLATE('西风路2号','1234567890','0000000000'),'0')
    -----------------------------------------------------------
                                                              4
      

  7.   

    ORARichard(没钱的日子好难过啊)
    or:select instr(translate('西风路2号','0123456789','0'),'0') from dual;这样最好------------------------------------------------------------------------------
    这个不行,TRANSLATE 是按位匹配的,如果第三个参数是'0',则出现123456789是都会匹配为NULL,
    这样的话就找不到字符,例如上面这个查询,结果为:
    INSTR(TRANSLATE('西风路2号','1234567890','0'),'0')
    --------------------------------------------------
                                                     0
      

  8.   

    非常感谢大家的支持,我的问题可能还没有说清楚,是这样:
    一张表:STREE:内有路名,详细地址两个主要字段:
    路名              详细地址
    西风路             1号
    (这是正常的记录)
                       西风路2号-------(这是不正常的)
    录入的人吧路名和详址全写到"详细地址"字段里去了,所以现在要做个过程,用游标去把记录一条一条取出来,然后处理,而数字是分解这类记录的唯一标识,但由于某种原因,不能用循环.
    我也觉得要求有点变态,可是没办法,请大家帮帮我
      

  9.   

    to qiaozhiwei(乔)
    你说的没错。是我的笔误,我的第一句中还是10个空格呢。可这句改漏了。
      

  10.   

    update stree set 路名=substr(详细地址,1,INSTR(TRANSLATE(详细地址, '1234567890', '0000000000'), '0')),详细地址=substr(详细地址,INSTR(TRANSLATE(详细地址, '1234567890', '0000000000'), '0'),length(详细地址)-INSTR(TRANSLATE(详细地址, '1234567890', '0000000000'), '0')+1) where INSTR(TRANSLATE(详细地址, '1234567890', '0000000000'), '0')>0;