Oracle - 如何提取分隔的字符串

时间:2017-08-11 11:24:52

标签: sql oracle

我有一个示例字符串,如下所示,

A|SDFR|RESTA|PRET|PRUQA
B|121|BBCTRI|9ALFA|DEV|5AS

我想提取发送分隔符之后的部分,

预计,

RESTA|PRET|PRUQA
BBCTRI|9ALFA|DEV|5AS

我得到的只是提取单个字符regexp_substr

3 个答案:

答案 0 :(得分:4)

假设您的意思是在第二个分隔符之后,您不需要为此使用正则表达式;您可以使用基本的substr()](http://docs.oracle.com/database/121/SQLRF/functions196.htm)函数,使用instr()获取起始位置:

substr(<your_string>, instr(<your_string>, '|', 1, 2) + 1)

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

答案 1 :(得分:2)

试试这个:

substr(string, instr(string, '|', 1, 2)+1)

答案 2 :(得分:0)

也许是这样;

with a as (select 'B|121|BBCTRI|9ALFA|DEV|5AS' test from dual)
select substr(test,instr(test,'|',3)+1) from a