MySQL에서는 SUBSTRING() 함수를 사용하면 필드(컬럼)에 저장된 문자열 중 원하는 부분만 간단하게 추출할 수 있습니다. 로그 데이터 가공, 요약문 생성, 특정 패턴의 값 잘라내기 등 다양한 상황에서 유용하게 활용됩니다.
SUBSTRING() 기본 문법
SUBSTRING() 함수의 기본적인 사용 형식은 다음과 같습니다.
select substring(yourColumnName, yourStartingIndex, yourLength) from yourTableName;
각 인자의 의미는 아래와 같습니다.
- yourColumnName: 문자열을 추출할 대상 컬럼명
- yourStartingIndex: 추출을 시작할 위치 (MySQL은 1부터 시작)
- yourLength: 시작 위치부터 가져올 문자 수
예제 테이블 생성하기
먼저 실습용 테이블을 생성합니다.
mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Title longtext ); Query OK, 0 rows affected (0.57 sec)
레코드 삽입
INSERT 명령어를 사용해 테이블에 데이터를 추가합니다.
mysql> insert into DemoTable(Title) values('MySQL is a relational database management system');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(Title) values('MongoDB is a popular No SQL database');
Query OK, 1 row affected (0.18 sec)저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable;
실행 결과는 다음과 같습니다.
+----+--------------------------------------------------+ | Id | Title | +----+--------------------------------------------------+ | 1 | MySQL is a relational database management system | | 2 | MongoDB is a popular No SQL database | +----+--------------------------------------------------+ 2 rows in set (0.00 sec)
SUBSTRING() 함수 적용하기
이제 SUBSTRING() 함수를 필드에 직접 적용해 보겠습니다. 아래 쿼리는 Title 컬럼의 첫 번째 문자부터 21글자까지 추출합니다.
mysql> select substring(Title,1,21) from DemoTable;
실행 결과:
+-----------------------+ | substring(Title,1,21) | +-----------------------+ | MySQL is a relational | | MongoDB is a popular | +-----------------------+ 2 rows in set (0.00 sec)
정리
SUBSTRING() 함수는 세 개의 인자를 받으며, 두 번째 인자인 시작 위치는 1부터 카운트된다는 점을 기억해야 합니다. 또한 세 번째 인자는 끝나는 위치가 아니라 가져올 문자의 개수(길이)라는 점도 주의하세요. 이 두 가지만 유의하면 복잡한 문자열 처리 작업도 손쉽게 해결할 수 있습니다.