2016-09-09 2 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

또 다른 옵션은 두 개의 콜론 사이의 문자열을 얻을 수 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의 해결책이 가장 빠를 가능성이 큽니다.