2017-08-11 16 views

答えて

4

を、あなたはこのために正規表現を使用する必要はありません。あなたは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

デモを追加する必要がありますと言います

0

多分このようになります。

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

'instr()'呼び出しは、文字列の3番目の文字から始まる最初の区切り文字を与えます。最初の要素が必ずしも正確に1文字でない場合(この例ではA、B)、これは期待どおりに機能しません –

2

この試してください:あなたは2番目の区切り文字の後を意味すると仮定すると、

substr(string, instr(string, '|', 1, 2)+1) 
関連する問題