我有如下的樣本串,甲骨文 - 如何提取分隔字符串
A|SDFR|RESTA|PRET|PRUQA
B|121|BBCTRI|9ALFA|DEV|5AS
我想提取物,後來發送分隔符的一部分,
預計,
RESTA|PRET|PRUQA
BBCTRI|9ALFA|DEV|5AS
我得到的只是提取單個字符regexp_substr
我有如下的樣本串,甲骨文 - 如何提取分隔字符串
A|SDFR|RESTA|PRET|PRUQA
B|121|BBCTRI|9ALFA|DEV|5AS
我想提取物,後來發送分隔符的一部分,
預計,
RESTA|PRET|PRUQA
BBCTRI|9ALFA|DEV|5AS
我得到的只是提取單個字符regexp_substr
假設你的意思是第二個分隔符後,您不需要使用這個正則表達式;您可以使用基本] 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
也許是這樣;
with a as (select 'B|121|BBCTRI|9ALFA|DEV|5AS' test from dual)
select substr(test,instr(test,'|',3)+1) from a
試試這個:
substr(string, instr(string, '|', 1, 2)+1)
'instr()'調用爲您提供從字符串中第三個字符開始的第一個分隔符。如果第一個元素不總是正好是一個字符(例子中的A,B),那麼這並不總是按預期工作 –