从表中(v_table)截取字段(error_note)中字符串"RspType" 往前推出现的第一个[ ]中的字符串kkkk和PPPP,
XXXXXXX,KKKK以及PPPP长度不固定,如何截取?请教各位大神,谢谢啦。
select error_note  from v_table  ;
XXXXXXXXXXXXXXXX[KKKK_PPPP]","RspType"XXXXXXXXXXXXXXXX
小新手,谢谢各位啦

解决方案 »

  1.   

    百度regexp_substr 
      

  2.   

    可以使用substr函数
      

  3.   

    regexp_substr 上百度查了,但还是不会用,我是有多菜
      

  4.   

    kkkk和pppp是用_分割的吗?
    如果是可以用
    select  substr(error_note  ,INSTR(error_note, '[')+1,INSTR(error_note, '_')-INSTR(error_note, '[')-1) kk ,
    substr(error_note  ,INSTR(error_note, '_')+1,INSTR(error_note, ']')-INSTR(error_note, '_')-1) pp
     from v_table
      

  5.   

    WITH T AS
     (SELECT 'XXXXXXXXXXXXXXXX[KKKK_PPPP]","RspType"XXXXXXXXXXXXXXXX' S
      FROM   DUAL
      UNION ALL
      SELECT 'XXX[XXXX]XXXXXXXXX[KKKK_PPPP]","RspType"XXXXXXXXXXXXXXXX' S
      FROM   DUAL
      UNION ALL
      SELECT 'XXXXXXXXXXXXXXXX[KKKK_PPPP]",asdfasdfa"RspType"XXXXXXXXXXXXXXXX' S
      FROM   DUAL)
    SELECT S, S1, REGEXP_SUBSTR(S1, '[^_]+', 1, 1) K,
           REGEXP_SUBSTR(S1, '[^_]+', 1, 2) P
    FROM   (SELECT S, REGEXP_REPLACE(S, '.*\[([^\[]+)\].*"RspType".*', '\1') S1
             FROM   T)