substr(col,instr(col,'-')+1,instr(col,'-',1,2)-instr(col,'-')-1);eg:
select substr('aaaa-bbb-ccccc',instr('aaaa-bbb-ccccc','-')+1,instr('aaaa-bbb-ccccc','-',1,2)-instr('aaaa-bbb-ccccc','-')-1) from dual;

解决方案 »

  1.   

    你去看一下Oracle中是否可以用charindex和substring函数?
      

  2.   

    用substr函数和instr函数即可
    substr函数可以取出子字符串, instr函数可以查到字符的位置
      

  3.   

    取出第1个和第2个“-”之间字符:select substr(col,
    instr(col,'-')+1,   --从第1个“-”出现的问题的下一个字符开始
    instr(col,'-',1,2)-instr(col,'-')-1   --两个“-”之间的字符个数
    ) from tbl;
      

  4.   

    谢谢楼上,我也跟学了一招
    附加信息!!
    substr(s,n,m)--string
    变量:
    s-----string
    n-----开始文字位置
    m-----文字数
    这个函数只能再Oracle,DB2,PostgreSQL里用
    instr(s,t[,n[,m]])---integer
    s-----string
    t-----要检索的文字列
    n-----开始文字位置
    m-----第几个
    这个再oracle用
    mySQL, MS Access只有instr(s,t)