728x90
반응형
oracle에서 SUBSTR을 사용하여 문자열을 자르는 경우도 있지만
특정 문자열을 기준으로 분리하여 조회하는 경우도 있다. 예를들어 전화번호의 값이 010-XXXX-XXXX의 형식으로 저장되어 있을 때 중간4개의 번호만 조회하는 경우가 있을 수 있다.
REGEXP_SUBSTR을 사용하여 특정문자를 구분자로 두고 문자열을 자를 수 있다.
사용법은 REGEXP_SUBSTR('컬럼 또는 값' , '[^ (구분자) ]+', 구분자를 찾을 위치, 구분자를 찾은 순서) 의 포멧이다.
간단하게 DBA_DATA_FILES 로 예시를 들어보면
SELECT
file_name,
regexp_substr(file_name, '[^\]+', 1, 1) STR1,
regexp_substr(file_name, '[^\]+', 1, 2) STR2,
regexp_substr(file_name, '[^\]+', 1, 3) STR3,
regexp_substr(file_name, '[^\]+', 2, 1) STR4,
regexp_substr(file_name, '[^\]+', 2, 2) STR5
FROM dba_data_files;
위처럼 SQL을 작성 할 수 있다.
결과는 이렇게 나온다.
REGEXP_SUBSTR(FILE_NAME, '[^\]+', 2, 2) <- 이 구문으로 예시를 들자면
\ <- 구분문자
2 <- file_name에서의 시작위치 (C:\APP.... 이런식의 문자열로 시작되는데 :\APP... 여기서 부터 검색한다고 보면된다)
2 <- 2번째 블록 ( :\APP\ORADATA 여기서 ':' 는 첫번째 찾은 문자열이고 'APP' 이게 두번째 찾은 문자열이다, 'ORADATA'는 3번째 찾은 문자열이 될것이다)
728x90
반응형
'DB (데이터베이스) > Oracle (오라클)' 카테고리의 다른 글
[Oracle] oracle temp tablespace 변경 (0) | 2024.03.17 |
---|---|
[Oracle] oracle 리스터 포트 변경방법 (0) | 2024.03.15 |
[Oracle] regexp_substr로 날짜 추출하기 (0) | 2024.03.15 |
[Oracle] oracle AWRRPT 사용 기록 확인 (0) | 2024.02.02 |
[Oracle] oracle drop user시 ORA-06904 발생 해결 (0) | 2024.01.29 |