DB/ORACLE

ORACLE 문자열 자르기

devmean 2026. 3. 25. 10:18

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

반응형