长度不固定,而且要用一句sql啊?
关注

解决方案 »

  1.   

    注意将下面的所有的字符'Abcce0133'替换成你要的字符变量。
    select substr('Abcce0133',least(
                 decode(instr('Abcce0133', '0'),0, 10000, instr('Abcce0133', '0')),
                 decode(instr('Abcce0133', '1'),0, 10000, instr('Abcce0133', '1')),
                 decode(instr('Abcce0133', '2'),0, 10000, instr('Abcce0133', '2')),
                 decode(instr('Abcce0133', '3'),0, 10000, instr('Abcce0133', '3')),
                 decode(instr('Abcce0133', '4'),0, 10000, instr('Abcce0133', '4')),
                 decode(instr('Abcce0133', '5'),0, 10000, instr('Abcce0133', '5')),
                 decode(instr('Abcce0133', '6'),0, 10000, instr('Abcce0133', '6')),
                 decode(instr('Abcce0133', '7'),0, 10000, instr('Abcce0133', '7')),
                 decode(instr('Abcce0133', '8'),0, 10000, instr('Abcce0133', '8')),
                 decode(instr('Abcce0133', '9'),0, 10000, instr('Abcce0133', '9')))
                 )
      from dual;
      

  2.   

    谢谢 lynx(lynx)
    还有没有别的?也可以不用一句,毕竟效率更重要。
      

  3.   

    有一点问题,试一下这个是什么结果:
    select substr('Abcce50000000133',least(
                 decode(instr('Abcce50000000133', '0'),0, 10000, instr('Abcce0133', '0')),
                 decode(instr('Abcce50000000133', '1'),0, 10000, instr('Abcce0133', '1')),
                 decode(instr('Abcce50000000133', '2'),0, 10000, instr('Abcce0133', '2')),
                 decode(instr('Abcce50000000133', '3'),0, 10000, instr('Abcce0133', '3')),
                 decode(instr('Abcce50000000133', '4'),0, 10000, instr('Abcce0133', '4')),
                 decode(instr('Abcce50000000133', '5'),0, 10000, instr('Abcce0133', '5')),
                 decode(instr('Abcce50000000133', '6'),0, 10000, instr('Abcce0133', '6')),
                 decode(instr('Abcce50000000133', '7'),0, 10000, instr('Abcce0133', '7')),
                 decode(instr('Abcce50000000133', '8'),0, 10000, instr('Abcce0133', '8')),
                 decode(instr('Abcce50000000133', '9'),0, 10000, instr('Abcce0133', '9')))
                 )
      from dual
    /上面的字符串刚好是0开始的
      

  4.   

    不用那么复杂,用这下面这一句就OK了:
    select translate('Abcce0133','0123456789',' ') from dual;
      

  5.   

    SQL> select substr(col,1,instr(col,' ')-1) from (
      2  select translate('aef124','0123456789','          ') col
      3  from dual) t;SUB
    ---
    aefSQL>
      

  6.   

    SQL> select substr(col,1,instr(col,' ')-1) from (
      2  select translate('aef12wef2341sdf','0123456789','          ') col
      3  from dual) t;SUB
    ---
    aefSQL> select trim(translate('aef12123','0123456789','          ')) col from dual;COL
    ---
    aefSQL> 上面是对所有情况的处理,你说的那种情况是比较简单的
    用最后面的那个语句即可。