반응형
오라클(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개로 분리가 된다.
반응형
'IT > Oracle' 카테고리의 다른 글
[Oracle] Windows11 SQL Developer 설치하는 방법 (0) | 2024.11.25 |
---|---|
[Oracle] 오라클(Oracle) 특정 데이터 값으로 모든 테이블에서 데이터 찾는 방법 (0) | 2023.12.26 |
[Oracle] 오라클(Oracle) ora-00257 archiver error. connect as sysdba only until resolved 문제 해결 방법 (0) | 2023.10.01 |
[Oracle] 오라클(Oracle) TO_NUMBER 999999D99 사용시 주의해야 할 점 (0) | 2023.08.13 |
[Oracle] 오라클(Oracle) ORA-01843 지정한 월이 부적합합니다 문제 해결 방법 (0) | 2023.07.11 |
[Oracle] 오라클(Oracle) 데이터 롤백하는 방법 (0) | 2023.07.05 |
[Oracle] 오라클(Oracle) 날짜 및 AMPM 구하는 방법 (0) | 2023.07.03 |
[Oracle] 오라클(Oracle) fetch 문의 into 항목에 값의 수가 잘못됐습니다. 해결 방법 (0) | 2023.06.30 |
최근댓글