从给定字符串中提取子字符串

Mad*_*ddy 1 oracle plsql oracle10g

我有以下数据

1)MAXO_INSTR_INTERFACE    
2)MAXIS_VENDOR_INTERFACE
3)MAXIMOS_EMPS_INTERFACE2
Run Code Online (Sandbox Code Playgroud)

我需要提取位于PL/SQL中两个下划线之间的String

INPUT                    EXPECTED OUTPUT
------------------------ ---------------
MAXO_INSTR_INTERFACE     INSTR   
MAXIS_VENDOR_INTERFACE   VENDOR  
MAXIMOS_EMPS_INTERFACE2  EMPS
Run Code Online (Sandbox Code Playgroud)

我尝试过子串函数,但我无法准确执行.

Rob*_*ijk 5

一个稍微容易正则的表达:

SQL> with t as
  2  ( select 'maxo_instr_interface' as txt from dual union all
  3    select 'maxis_vendor_interface' from dual union all
  4    select 'maximos_emps_interface2' from dual
  5  )
  6  select txt
  7       , regexp_substr(txt,'[^_]+',1,2)
  8    from t
  9  /

TXT                     REGEXP_SUBSTR(TXT,'[^_]
----------------------- -----------------------
maxo_instr_interface    instr
maxis_vendor_interface  vendor
maximos_emps_interface2 emps

3 rows selected.
Run Code Online (Sandbox Code Playgroud)

问候,
Rob.