区切られた文字列、期待オラクル - 私は以下のようにサンプル文字列を持っている
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
を、あなたはこのために正規表現を使用する必要はありません。あなたはinstr()
で開始位置を取得し、基本] substr()
](http://docs.oracle.com/database/121/SQLRF/functions196.htm)関数を使用することができます。
substr(<your_string>, instr(<your_string>, '|', 1, 2) + 1)
instr()
への3番目の引数が2番目の発生をしたいと言います。
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
:第二引数は、2番目の区切りを指す位置1から開始している、とあなたはその区切り文字の後に次の文字で開始したいので、1
デモを追加する必要がありますと言います
多分このようになります。
with a as (select 'B|121|BBCTRI|9ALFA|DEV|5AS' test from dual)
select substr(test,instr(test,'|',3)+1) from a
この試してください:あなたは2番目の区切り文字の後を意味すると仮定すると、
substr(string, instr(string, '|', 1, 2)+1)
'instr()'呼び出しは、文字列の3番目の文字から始まる最初の区切り文字を与えます。最初の要素が必ずしも正確に1文字でない場合(この例ではA、B)、これは期待どおりに機能しません –