MySQL에서 테이블 열(column)에 저장된 값에서 부분 문자열(substring)을 추출하려면 SUBSTRING(), MID(), SUBSTR() 함수 중 하나를 사용할 수 있습니다. 이 세 함수는 기능적으로 완전히 동일하며, 어떤 것을 사용해도 결과는 같습니다.
중요한 점은 문자열 대신 열 이름을 함수의 첫 번째 인수로 전달해야 한다는 것입니다. 즉, 일반적인 문자열 위치에 추출하고자 하는 열의 이름을 지정하면 됩니다.
기본 문법
SELECT 열이름, SUBSTRING(열이름, 시작위치, 길이) FROM 테이블이름;
- 시작위치: 추출을 시작할 문자의 위치입니다 (1부터 시작).
- 길이: 시작 위치부터 몇 개의 문자를 추출할지 지정합니다.
예제
'Student' 테이블의 'Name' 열에서 부분 문자열을 추출한다고 가정해 보겠습니다. 세 가지 함수를 각각 사용한 결과는 다음과 같습니다.
SUBSTR() 함수 사용
mysql> Select name, SUBSTR(name,2,4) from student; +---------+------------------+ | name | SUBSTR(name,2,4) | +---------+------------------+ | Gaurav | aura | | Aarav | arav | | Harshit | arsh | | Gaurav | aura | | Yashraj | ashr | +---------+------------------+ 5 rows in set (0.00 sec)
MID() 함수 사용
mysql> Select name, MID(name,2,4) from student; +---------+---------------+ | name | MID(name,2,4) | +---------+---------------+ | Gaurav | aura | | Aarav | arav | | Harshit | arsh | | Gaurav | aura | | Yashraj | ashr | +---------+---------------+ 5 rows in set (0.00 sec)
SUBSTRING() 함수 사용
mysql> Select name, substring(name,2,4) from student; +---------+---------------------+ | name | substring(name,2,4) | +---------+---------------------+ | Gaurav | aura | | Aarav | arav | | Harshit | arsh | | Gaurav | aura | | Yashraj | ashr | +---------+---------------------+ 5 rows in set (0.00 sec)
위 예제에서 (name, 2, 4)는 이름의 두 번째 문자부터 네 글자를 추출한다는 의미입니다. 예를 들어 'Gaurav'에서는 두 번째 문자인 'a'부터 네 글자인 'aura'가 반환됩니다.
WHERE 조건과 함께 사용하기
부분 문자열 추출 함수는 WHERE 절과 함께 사용하여 특정 조건을 만족하는 행만 대상으로 할 수도 있습니다. 아래 예제는 주소가 'delhi'인 학생들만 대상으로 부분 문자열을 추출합니다.
mysql> Select name, substring(name,2,4) from student WHERE address = 'delhi'; +---------+---------------------+ | name | substring(name,2,4) | +---------+---------------------+ | Gaurav | aura | | Harshit | arsh | +---------+---------------------+ 2 rows in set (0.16 sec) mysql> Select name, MID(name,2,4) from student WHERE address = 'delhi'; +---------+---------------+ | name | MID(name,2,4) | +---------+---------------+ | Gaurav | aura | | Harshit | arsh | +---------+---------------+ 2 rows in set (0.00 sec) mysql> Select name, SUBSTR(name,2,4) from student WHERE address = 'delhi'; +---------+------------------+ | name | SUBSTR(name,2,4) | +---------+------------------+ | Gaurav | aura | | Harshit | arsh | +---------+------------------+ 2 rows in set (0.00 sec)
정리
MySQL에서 열 값의 일부를 추출할 때는 SUBSTRING(), MID(), SUBSTR() 중 편한 함수를 선택하면 됩니다. 세 함수 모두 동일하게 동작하며, 첫 번째 인수로 열 이름을, 두 번째 인수로 시작 위치를, 세 번째 인수로 추출할 길이를 지정하는 방식으로 사용합니다. 필요에 따라 WHERE 절을 추가해 원하는 행만 필터링할 수도 있습니다.