有个字符串“aa-bb-cc-dd”,我想得到bb,如何截取第一个杠和第二个杠直接的内容呢,请高手指点,谢谢!

解决方案 »

  1.   


    SQL> select substr('aa-bb-cc-dd',4,2) from dual;SUBSTR('AA-BB-CC-DD',4,2)
    -------------------------
    bb
      

  2.   


    --如果第一个(-)和第二个(-)之间有多个值的或,得用正则表达式来做:
    SQL> select regexp_substr('aa-bb-cc-dd','[^-]+',1,2) str from dual;
    STR
    ---
    bbSQL> select regexp_substr('aa-bbyyyyyyyyyyy-cc-dd','[^-]+',1,2) str from dual;
    STR
    -------------
    bbyyyyyyyyyyySQL> select regexp_substr('aa-bbyyyyeeer-cc-dd','[^-]+',1,2) str from dual;STR
    ----------
    bbyyyyeeerSQL> select regexp_substr('aa-bb5454545tytrytytghgr-cc-dd','[^-]+',1,2) str from dual;
    STR
    ---------------------
    bb5454545tytrytytghgrSQL> select regexp_substr('aa-CSDN_yeeXun-cc-dd','[^-]+',1,2) str from dual;
    STR
    -----------
    CSDN_yeeXun
      

  3.   

    select substr('hello-boy-goodbye',
                  instr('hello-boy-goodbye', '-', 1, 1) + 1,
                  instr('hello-boy-goodbye', '-', 1, 2) -
                  instr('hello-boy-goodbye', '-', 1, 1) - 1)
      from dual
      

  4.   

    楼上的第一种写法太死,如果字符串不是'aa-bb-cc-dd‘,随便换一个,你的语句就不行了
    第二种 正则表达式太复杂,我不怎么用,不做评价