2017-02-04 1 views
1

에 따라이분할 문자열 내가 같은 문자열이 하이픈

XX0099-X01 

나는

으로 시도 즉, 하이픈에 따라 두 가지로 XX0099X01

을 문자열을 분할하고 싶습니다

SELECT 'XX0099-X01', 
      SUBSTR('XX0099-X01', 
        1, 
        INSTR('XX0099-X01', 
         '-', 
         1 
         ) -1 
       ) 
    FROM dual 

두 번째 부분을 얻는 방법을 모르십니까?

우리는 여전히 8i Oracle 데이터베이스를 사용하는 구형 레거시 시스템을 가지고 있습니다. substr의 조합 instr을 사용

답변

0

는 :

이 지원되는 경우 또 다른 방법은 regexp_substr을 사용
select 
    substr(s, 1, instr(s, '-') - 1), 
    substr(s, instr(s, '-') + 1) 
from t; 

:

select 
    regexp_substr('XX0099-X01','[^-]+', 1, 1), 
    regexp_substr('XX0099-X01','[^-]+', 1, 2) 
from dual; 
+0

우리는 ol 아직 8i 오라클 데이터베이스를 사용하는 레거시 시스템, 위의 8i에서 작동하지 않습니다. 감사합니다 – user75ponic

+0

@ user75ponic - 이전 버전 – GurV

+0

에 대한 업데이트가 추가되었습니다. 많은 감사를드립니다. – user75ponic

2

당신이 정규식 문자열/교체를 사용할 수없는 경우, 여기에 옵션 인 오라클의 기본 문자열 기능을 사용합니다 :

SELECT SUBSTR(col, 1, INSTR(col, '-') - 1) AS first_part, 
     SUBSTR(col, INSTR(col, '-') + 1) AS second_part 
FROM yourTable 
+0

감사합니다. 많이 감사합니다. – user75ponic