Oracle 字符串部分的REGEXP\u SUBSTR

Oracle 字符串部分的REGEXP\u SUBSTR,oracle,regexp-substr,Oracle,Regexp Substr,我想得到: 82961\u 01B04WZXQQSUGJ4YMRRT2A7TRHK\u MR\u 2\u 1of1 从下面的表达式 LASTNAME\u FIRSTNAME\u 82961\u 01B04WZXQQSUGJ4YMRRT2A7TRHK\u MR\u 2\u 1of1 有人知道我如何使用regexp\u substr得到这个吗 编辑 基本上我有一个字段,它有7个集合,每个集合之间用u分隔。我给出的字符串只是一个例子。我想在第二次之后找回一切。没有固定的字符长度,因此无法使用subst

我想得到:

82961\u 01B04WZXQQSUGJ4YMRRT2A7TRHK\u MR\u 2\u 1of1

从下面的表达式

LASTNAME\u FIRSTNAME\u 82961\u 01B04WZXQQSUGJ4YMRRT2A7TRHK\u MR\u 2\u 1of1

有人知道我如何使用regexp\u substr得到这个吗

编辑

基本上我有一个字段,它有7个集合,每个集合之间用u分隔。我给出的字符串只是一个例子。我想在第二次之后找回一切。没有固定的字符长度,因此无法使用substr函数。因此,我使用了regexp\u substr。我可以用一个简化的版本逃脱

Select FILE_NAME, (  (REGEXP_SUBSTR(FILE_NAME,'[^_]+_',1,3)) || 
                      (REGEXP_SUBSTR(FILE_NAME,'[^_]+_',1,4)) || 
                      (REGEXP_SUBSTR(FILE_NAME,'[^_]+_',1,5)) ||
                      (REGEXP_SUBSTR(FILE_NAME,'[^_]+_',1,6)) || 
                      (REGEXP_SUBSTR(FILE_NAME,'[^_]+',1,7))  ) as RegExp
             from tbl
下面是来自文件名字段的更多数据

LAST_FIRST_82961_01B04WZXQQSUGJ4YMRRT2A7TRHK_MR_2_1of1
SMITH_JOHN_82961_0130BPQX9QZN9G4P5RDTPA9HR4R_MR_1_1of1
LASTNAME_FIRSTNAME_99999_01V0MU4XUQK0Y24Y9RYTFA7W1CM_MR_3_1of1

根据您的需求,您可以继续使用简单的
SUBSTR
功能。它的速度更快,并且解决了删除字符串
LASTNAME\u FIRSTNAME
的简单需要

select  substr('LASTNAME_FIRSTNAME_82961_01B04WZXQQSUGJ4YMRRT2A7TRHK_MR_2_1of1', 20) data_string
from    dual;
输出:

data_string
-----------------
82961_01B04WZXQQSUGJ4YMRRT2A7TRHK_MR_2_1of1
除非你有另一个需要解决的基本逻辑?
请澄清,以便我可以相应地编辑答案

要获取第二个下划线之后的所有内容,您不需要正则表达式,但可以使用以下内容:

 select substr(FILE_NAME, instr(FILE_NAME, '_', 1, 2) +1 ) from tbl    

instr
返回从第一个字符开始的第二次出现的“_”的位置;
substr
只是从
instr
+1

给出的位置开始获取所有内容,您需要实现什么逻辑?是否需要删除“LASTNAME\u FIRSTNAME”部分?以下划线作为分隔符的前两个“单词”?直到第二个下划线?到目前为止,你尝试了什么?很抱歉,我没有详细解释。基本上我有一个领域。