MySQL에서 특정 위치부터 시작하는 문자열의 일부를 추출하려면 mid() 함수를 사용할 수 있습니다. 이 함수는 지정한 시작 위치부터 원하는 길이만큼의 부분 문자열을 반환합니다.
mid() 함수 기본 문법
select mid(컬럼명, 시작위치, 추출할길이) as 별칭 from 테이블명;
예제 테이블 생성
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable -> ( -> Title text -> ); Query OK, 0 rows affected (0.64 sec)
insert 명령을 사용하여 테이블에 레코드를 삽입합니다.
mysql> insert into DemoTable values('My best framework is Spring and Hibernate');
Query OK, 1 row affected (0.21 sec)select 문을 사용하여 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+-------------------------------------------+ | Title | +-------------------------------------------+ | My best framework is Spring and Hibernate | +-------------------------------------------+ 1 row in set (0.00 sec)
부분 문자열 추출 쿼리
다음은 MySQL에서 문자열의 일부를 가져오는 쿼리입니다. 이 예제에서는 21번째 문자부터 시작하여 30개의 문자를 추출하려고 합니다. 만약 21번째 문자 이후의 문자 수가 30개보다 적다면, 남아 있는 문자만 출력됩니다.
mysql> select mid(Title,21,30) as partofString from DemoTable;
출력 결과
+-----------------------+ | partofString | +-----------------------+ | Spring and Hibernate | +-----------------------+ 1 row in set (0.00 sec)
결과를 보면 'My best framework is '까지가 20번째 문자까지이며, 21번째 문자인 'S'부터 시작해 나머지 문자열인 'Spring and Hibernate'가 추출된 것을 확인할 수 있습니다.
참고 사항
mid() 함수는 substring() 및 substr() 함수와 동일하게 동작하므로, 세 함수 중 어느 것을 사용해도 같은 결과를 얻을 수 있습니다. 또한 시작 위치는 1부터 계산되며, 음수 값을 지정하면 문자열 끝에서부터 역방향으로 위치를 계산합니다.