2016-09-09 5 views
2

レコードの真ん中を抽出しようとしています。私は弦の唯一の中央を取得したい。SubstrとinstrをSQLで使用

select instr('WUK00000105376:WUKE03960761:WUKR0093868603',':') 
from dual;

この文字列からはWUKE03960761しか取得しません。

私は、サングリングとinstringを使用して出力を取得しようとしましたが、私は取得していません。

答えて

2
SELECT SUBSTR(col, 
       INSTR(col, ':') + 1, 
       INSTR(col, ':', 1, 2) - INSTR(col, ':') - 1) 
FROM dual 
1

別のオプション2つのコロンの間の文字列を取得するためにregexp_substring()を使用することです:

select regexp_substr('WUK00000105376:WUKE03960761:WUKR0093868603',':[A-Z0-9]+:') 
from dual; 

は、しかし、これはまた、コロンを返すだろうが、あなたはまた、から特定のグループを返すようにregexp_substr()を伝えることができます正規表現:

select regexp_substr('WUK00000105376:WUKE03960761:WUKR0093868603',':([A-Z0-9]+):',1,1,'i',1) 
from dual; 

しかし、substrとinstrを使用したTimのソリューションは、おそらくもっと高速になるでしょう。