我有一个示例字符串,如下所示,
A|SDFR|RESTA|PRET|PRUQA
B|121|BBCTRI|9ALFA|DEV|5AS
Run Code Online (Sandbox Code Playgroud)
我想提取发送分隔符之后的部分,
预期的,
RESTA|PRET|PRUQA
BBCTRI|9ALFA|DEV|5AS
Run Code Online (Sandbox Code Playgroud)
我得到的只是提取单个字符 regexp_substr
假设您的意思是在第二个分隔符之后,您不需要为此使用正则表达式;您可以使用基本的 ] substr()]( http://docs.oracle.com/database/121/SQLRF/functions196.htm ) 函数,获取起始位置instr():
substr(<your_string>, instr(<your_string>, '|', 1, 2) + 1)
Run Code Online (Sandbox Code Playgroud)
第三个论据 instr()表示你想要第二次出现;第二个参数表示您从位置 1 开始。然后指向第二个分隔符,并且您想从该分隔符之后的下一个字符开始,因此必须加 1。
演示:
with t (str) as (
select 'A|SDFR|RESTA|PRET|PRUQA' from dual
union all select 'B|121|BBCTRI|9ALFA|DEV|5AS' from dual
)
select substr(str, instr(str, '|', 1, 2) + 1)
from t;
SUBSTR(STR,INSTR(STR,'|',1
--------------------------
RESTA|PRET|PRUQA
BBCTRI|9ALFA|DEV|5AS
Run Code Online (Sandbox Code Playgroud)