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”部分?以下划线作为分隔符的前两个“单词”?直到第二个下划线?到目前为止,你尝试了什么?很抱歉,我没有详细解释。基本上我有一个领域。