1. SUBSTR 기본 문법 + 예제
SUBSTR(문자열, 시작위치, 길이)
문자열의 시작 위치부터 지정한 길이만큼 잘라 반환합니다.
앞에서부터 자르기
SELECT SUBSTR('HELLO WORLD', 1, 5) FROM DUAL;
결과: HELLO
1번째 위치부터 5글자 추출
특정 위치부터 끝까지 자르기
SELECT SUBSTR('HELLO WORLD', 7) FROM DUAL;
결과: WORLD
길이를 생략하면 끝까지 반환
뒤에서부터 자르기 (음수 인덱스)
SELECT SUBSTR('HELLO WORLD', -5) FROM DUAL;
결과: WORLD
뒤에서 5번째 위치부터 끝까지 반환
뒤에서 일부만 자르기
SELECT SUBSTR('HELLO WORLD', -5, 3) FROM DUAL;
결과: WOR
뒤에서 5번째부터 3글자를 추출
2. 실전 활용 예제
주민번호 앞자리 추출
SELECT SUBSTR(jumin_no, 1, 6) FROM member;
생년월일 부분 추출
이메일 아이디 추출
SELECT SUBSTR(email, 1, INSTR(email, '@') - 1) FROM member;
@ 앞부분만 추출
파일 확장자 추출
SELECT SUBSTR(file_name, INSTR(file_name, '.', -1) + 1) FROM files;
마지막 점(.) 이후 문자열 추출 (파일이라면 확장자 추출)
3. 함께 쓰면 좋은 함수
문자열 처리는 여러 함수와 조합하면 훨씬 강력해집니다.
INSTR (문자 위치 찾기 + SUBSTR 조합)
SELECT SUBSTR('abc@naver.com', 1, INSTR('abc@naver.com', '@') - 1) FROM DUAL;
결과: abc
가장 많이 사용하는 패턴
LENGTH (문자열 길이 활용)
SELECT SUBSTR('HELLO WORLD', LENGTH('HELLO WORLD') - 4) FROM DUAL;
결과: WORLD
전체 길이를 이용해 뒤에서 자르기
REPLACE (치환 후 자르기)
SELECT SUBSTR(REPLACE('010-1234-5678', '-', ''), 1, 3) FROM DUAL;
결과: 010
불필요한 문자 제거 후 활용
TRIM (공백 제거 후 자르기)
SELECT SUBSTR(TRIM(' HELLO '), 1, 2) FROM DUAL;
결과: HE
REGEXP_SUBSTR (정규식 기반 추출)
SELECT REGEXP_SUBSTR('abc123def', '[0-9]+') FROM DUAL;
결과: 123
복잡한 패턴 처리에 유용
SUBSTR vs REGEXP_SUBSTR 의 차이점 https://devmean.tistory.com/25
반응형
'DB > ORACLE' 카테고리의 다른 글
| ORACLE ORA-00257: archiver error 해결 방법 (0) | 2026.03.26 |
|---|---|
| ORACLE SUBSTR vs REGEXP_SUBSTR 차이점 (0) | 2026.03.25 |
| ORACLE 테이블 복사하기 (0) | 2026.03.24 |
| ORACLE WITH 절(서브쿼리 팩토링) 사용법 (0) | 2026.03.24 |
| ORACLE 프로시저 특정 문자열 검색 조회 (0) | 2025.03.27 |