반응형

Oracle 로고

오라클(Oracle)에서 데이터 중 "/" 슬래쉬가 들어가는 데이터가 있는데 이 슬래쉬를 구분하여 데이터를 뽑아내려고 한다.


목차

1. 오라클 10g 미만에서 SPLIT 하는 방법
2. 오라클 10g 이상에서 SPLIT 하는 방법

1. 오라클 10g 미만에서 SPLIT 하는 방법

오라클 버전 10g 미만에서 SPLIT 하는 방법은 SUBSTR과 INSTR 함수를 사용하여 SPLIT을 할 수 있다.

예를 들어, '3/48'이라는 데이터가 있을 때, 이 데이터를 / 기준으로 SPLIT을 하여 3과 48을 뽑아내려고 한다.

SELECT SUBSTR('3/48', 1, INSTR('3/48/24', '/') -1) AS A
     , SUBSTR('3/48', INSTR('3/48/24', '/') +1)    AS B
  FROM DUAL

 

위와 같이, SUBSTR와 INSTR 함수를 사용하면 되는데, SUBSTR 함수로 자를 데이터를 기준으로 위치 인덱스를 설정하고, INSTR로 '/'를 기준으로 그 앞 데이터의 위치를 뽑아 온다. 기준이 2개가 있을 때는 위와 같이 사용하면 되는데 3개 이상부터는 쿼리가 조금씩 복잡해 진다.

 

그래서, 오라클 버전 10g 이상 부터는 정규식을 사용하여 문자열을 SPLIT한다.

 

2. 오라클 10g 이상에서 SPLIT 하는 방법

오라클 10g 이상부터는 REGEXP_SUBSTR()함수를 사용하여 문자열을 SPLIT을 할 수 있다.

SELECT REGEXP_SUBSTR('3/48', '[^/]+', 1, 1)
     , REGEXP_SUBSTR('3/48', '[^/]+', 1, 2)
  FROM DUAL

 

위의 쿼리처럼 REGEXP_SUBSTR() 함수를 사용하여 SPLIT을 할 수 있다. 3개인 경우에도 보자.

SELECT REGEXP_SUBSTR('3/48/24', '[^/]+', 1, 1) AS A
     , REGEXP_SUBSTR('3/48/24', '[^/]+', 1, 2) AS B
     , REGEXP_SUBSTR('3/48/24', '[^/]+', 1, 3) AS C
  FROM DUAL

 

위와 같이, SUBSTR과 INSTR를 사용할 필요 없이, 뒤의 파라미터 숫자만 바꿔주면 된다.

이렇게 쿼리를 실행하면 3개로 분리가 된다.


반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기