[MySQL] SUBSTR

켈로그·2025년 6월 11일

SQL

목록 보기
7/20

문자열을 자를 때 사용하는 함수

MySQL에서 문자열의 일부분만 추출하고 싶을 때는 SUBSTR() 또는 SUBSTRING() 함수를 사용
두 함수는 동일한 동작을 하기 때문에 아무거나 사용해도 됨


기본 형태

SUBSTR(str, pos)
SUBSTR(str FROM pos)

SUBSTRING(str, pos)
SUBSTRING(str FROM pos)

문자열 strpos 위치부터 끝까지 잘라서 반환

  • pos는 1부터 시작 (0 아님!)
  • FROM 구문을 써도 결과는 동일

📌 예시

SELECT SUBSTR('Hello', 1);           -- 'Hello'
SELECT SUBSTR('Hello' FROM 1);       -- 'Hello'

pos가 0이면?

SELECT SUBSTR('Hello', 0);            -- ''
SELECT SUBSTRING('Hello' FROM 0);     -- ''
  • pos = 0이면 빈 문자열을 리턴합니다.

pos가 음수일 경우

pos가 음수이면 문자열의 끝에서부터 센다는 뜻입니다.

SELECT SUBSTR('Hello', -3);          -- 'llo'
SELECT SUBSTRING('Hello' FROM -3);   -- 'llo'
  • -3은 오른쪽에서 세어서 3번째 글자인 'l'부터 끝까지 자릅니다.

길이 지정해서 자르기

SUBSTR(str, pos, len)
SUBSTR(str FROM pos FOR len)
  • pos : 위치
  • len : 개수

문자열 strpos 위치에서 len 길이만큼 잘라 반환


📌 예시 1: 양수 인덱스

SELECT SUBSTR('Hello', 2, 2);           -- 'el'
SELECT SUBSTRING('Hello' FROM 2 FOR 2); -- 'el'
  • 'Hello'의 2번째 문자 'e'부터 2글자 → 'el'

📌 예시 2: 음수 인덱스

SELECT SUBSTR('Hello', -2, 2);          -- 'lo'
SELECT SUBSTRING('Hello' FROM -2 FOR 2);-- 'lo'
  • 오른쪽에서 두 번째 문자 'l'부터 2글자 → 'lo'

요약 정리

입력 예시결과설명
SUBSTR('Hello', 1)'Hello'처음부터 끝까지 자름
SUBSTR('Hello', 0)''0은 유효하지 않음
SUBSTR('Hello', -3)'llo'뒤에서 3번째부터 끝까지 자름
SUBSTR('Hello', 2, 2)'el'2번째부터 2글자
SUBSTR('Hello', -2, 2)'lo'뒤에서 2번째부터 2글자
profile
호랑이기운

0개의 댓글