MySQL에서 특정 필드(컬럼)에 저장된 문자열의 마지막 단어를 추출하고 싶다면, 내장 함수인 SUBSTRING_INDEX()를 사용하면 간단하게 해결할 수 있습니다.
SUBSTRING_INDEX() 기본 문법
마지막 단어를 추출하는 기본 문법은 다음과 같습니다.
SELECT SUBSTRING_INDEX(yourColumnName, ' ', -1) AS anyVariableName FROM yourTableName;
여기서 핵심은 세 번째 인자에 -1을 지정하는 것입니다. 구분자(delimiter)를 기준으로 오른쪽에서부터 첫 번째 요소, 즉 마지막 단어가 반환됩니다.
예제 테이블 생성하기
개념을 이해하기 위해 실습용 테이블을 먼저 만들어 보겠습니다. 아래는 테이블 생성 쿼리입니다.
mysql> create table FirstWordDemo -> ( -> AllWords longtext -> ); Query OK, 0 rows affected (0.83 sec)
샘플 데이터 삽입하기
INSERT 명령을 사용해 몇 개의 문장을 테이블에 저장합니다.
mysql> insert into FirstWordDemo values('This is the first MySQL Query');
Query OK, 1 row affected (0.11 sec)
mysql> insert into FirstWordDemo values('MySQL is a Relational Database');
Query OK, 1 row affected (0.17 sec)
mysql> insert into FirstWordDemo values('FirstWord is not correct');
Query OK, 1 row affected (0.21 sec)저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from FirstWordDemo;
실행 결과는 다음과 같습니다.
+--------------------------------+ | AllWords | +--------------------------------+ | This is the first MySQL Query | | MySQL is a Relational Database | | FirstWord is not correct | +--------------------------------+ 3 rows in set (0.00 sec)
마지막 단어 추출 쿼리 실행하기
이제 앞서 소개한 SUBSTRING_INDEX() 문법을 적용해 각 필드의 마지막 단어를 추출해 보겠습니다.
mysql> select SUBSTRING_INDEX(AllWords, ' ', -1) as MyFirstWordResult from FirstWordDemo;
실행 결과는 다음과 같습니다.
+-------------------+ | MyFirstWordResult | +-------------------+ | Query | | Database | | correct | +-------------------+ 3 rows in set (0.00 sec)
정리
SUBSTRING_INDEX(컬럼명, ' ', -1) 형태로 작성하면 공백을 구분자로 하여 문자열의 마지막 단어를 손쉽게 추출할 수 있습니다. 반대로 양수 값을 사용하면 첫 번째 단어를 추출할 수 있으므로, 상황에 맞게 인자를 조절하여 활용하시기 바랍니다.