select decode(instr('7867 1231231',' ',1,2),
       0,substr('7867 1231231',1,instr('7867 1231231',' ',1,1)-1),
       substr('7867 1231231',instr('7867 1231231',' ',1,1)+1,
       instr('7867 1231231',' ',1,2)-instr('7867 1231231',' ',1,1)-1))
from dual
可以把'7867 1231231' 换成你要的字符串就行了~

解决方案 »

  1.   

    而且你用like '%%' 查 出来的结果不对 ,比如 125 13888290100,你还以为有区号010的呢
      

  2.   

    opp_number中每个部分的分隔符是什么?是空格么?
      

  3.   

    如果是空格的话,或者其他固定字符的话,就好办了。
    首先用分隔符判断一下,opp_number有几部分组成,要么是两部分,要么是三部分。
    如果是两部分,第一部分就是特殊号码;
    如果是三部分,第一部分是区号,第二部分是特殊号码。根据具体情况取第一部分(第一和二部分),再去T1,T2里判断。
      

  4.   

    经过一轮处理 特殊号码只会出现在数据的起始未知,like '特号%' 效率也不是很好,有没有更有效的办法?