Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 'Learn With Ease' 문자열을 분할해 마지막 단어만 반환하는 방법

문자열을 분할하고 마지막 단어만 추출하고 싶다면 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수는 구분자(delimiter)를 기준으로 문자열을 나눈 뒤, 지정한 개수만큼의 부분 문자열을 반환합니다. 특히 세 번째 인자에 음수(-1)를 넣으면 오른쪽부터 계산하여 마지막 단어를 손쉽게 얻을 수 있습니다.

실제 동작 과정을 예제를 통해 살펴보겠습니다.

1. 테스트용 테이블 생성

먼저 테이블을 생성합니다.

mysql> create table DemoTable
(
    Words TEXT
);
Query OK, 0 rows affected (1.62 sec)

2. 샘플 데이터 삽입

INSERT 명령을 사용해 여러 개의 문장을 저장합니다.

mysql> insert into DemoTable values('Learn With Ease');
Query OK, 1 row affected (0.32 sec)
mysql> insert into DemoTable values('Intro To MySQL');
Query OK, 1 row affected (0.35 sec)
mysql> insert into DemoTable values('Deep Dive Using Java');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('C++ In Depth');
Query OK, 1 row affected (0.16 sec)

3. 저장된 데이터 확인

SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+-----------------------+
| Words                 |
+-----------------------+
| Learn With Ease       |
| Intro To MySQL        |
| Deep Dive Using Java  |
| C++ In Depth          |
+-----------------------+
4 rows in set (0.00 sec)

4. 마지막 단어만 추출하는 쿼리

아래 쿼리는 공백(' ')을 구분자로 사용해 각 문자열을 분할하고, -1을 지정하여 마지막 단어만 남깁니다.

mysql> update DemoTable set Words=substring_index(Words,' ',-1);
Query OK, 4 rows affected (0.28 sec)
Rows matched : 4 Changed : 4 Warnings : 0

5. 결과 확인

테이블을 다시 조회하면 각 문장에서 마지막 단어만 남은 것을 확인할 수 있습니다.

mysql> select *from DemoTable;
+----------+
| Words    |
+----------+
| Ease     |
| MySQL    |
| Java     |
| Depth    |
+----------+
4 rows in set (0.00 sec)

SUBSTRING_INDEX() 동작 원리

SUBSTRING_INDEX(문자열, 구분자, 개수) 형태로 사용하며, 개수가 양수면 왼쪽에서, 음수면 오른쪽에서 해당 위치까지의 문자열을 반환합니다. 위 예제에서 -1을 지정했기 때문에 마지막 공백 뒤에 있는 단어, 즉 'Ease', 'MySQL', 'Java', 'Depth'가 결과로 반환된 것입니다.