我想从类似这样的公式中得到A059.G05919 := G007.G00703
A059 和 G007  也就是在符号'.'前面的数据。应该如何写呢!

解决方案 »

  1.   


    select substr('A059.G05919 := G007.G00703',1,instr('A059.G05919 := G007.G00703','.',1)-1)
          , trim(substr('A059.G05919 := G007.G00703',instr('A059.G05919 := G007.G00703','=',1)+1,instr('A059.G05919 := G007.G00703','.',-1)-instr('A059.G05919 := G007.G00703','=',1)-1))
     from dual;---RESult:
    A059 G007
      

  2.   

    可以先取.SQL> select substr('A059.G05919',1,instr('A059.G05919','.')-1) from dual;
     
    SUBSTR('A059.G05919',1,INSTR('
    ------------------------------
    A059
    如果是固定的只有四位直接截取
    SQL> select substr('A059.G05919',1,4) from dual;
     
    SUBSTR('A059.G05919',1,4)
    -------------------------
    A059
      

  3.   

    正则表达式select REGEXP_SUBSTR(f,'[A-Z][0-9]+')as f1,REGEXP_SUBSTR(f,'[^.][A-Z][0-9]+') as f2,f from(
    select 'A059.G05919 := G007.G00703 ' as f from dual) /*
     F1 F2 F
    A059  G007 A059.G05919 := G007.G00703 
    */