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

MySQL 쿼리에서 첫 번째 단어만 추출하는 방법 – SUBSTRING_INDEX() 활용법

MySQL에서 문자열의 첫 번째 단어만 추출하고 싶다면 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수는 지정한 구분자를 기준으로 문자열을 나눈 뒤, 원하는 위치까지의 부분 문자열을 반환합니다.

SUBSTRING_INDEX() 기본 문법

SELECT SUBSTRING_INDEX(yourColumnName, ' ', 1) AS anyAliasName FROM yourTableName;

여기서 세 번째 인자인 1은 구분자(공백)를 기준으로 첫 번째 부분까지만 가져오라는 의미입니다. 즉, 공백 앞에 있는 첫 번째 단어가 결과로 반환됩니다.

예제 테이블 생성하기

먼저 실습용 테이블을 만들어 보겠습니다.

mysql> CREATE TABLE DemoTable
(
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentFullName VARCHAR(40)
);
Query OK, 0 rows affected (0.61 sec)

데이터 삽입하기

INSERT 명령어를 사용해 학생 이름 데이터를 입력합니다.

mysql> INSERT INTO DemoTable(StudentFullName) VALUES('John Smith');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable(StudentFullName) VALUES('Carol Taylor');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable(StudentFullName) VALUES('Bob Williams');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable(StudentFullName) VALUES('David Miller');
Query OK, 1 row affected (0.16 sec)

저장된 데이터 확인하기

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

mysql> SELECT * FROM DemoTable;

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

+-----------+-----------------+
| StudentId | StudentFullName |
+-----------+-----------------+
| 1         | John Smith      |
| 2         | Carol Taylor    |
| 3         | Bob Williams    |
| 4         | David Miller    |
+-----------+-----------------+
4 rows in set (0.00 sec)

첫 번째 단어 추출 쿼리 실행하기

이제 SUBSTRING_INDEX() 함수를 사용해 이름에서 첫 번째 단어(이름 부분)만 추출하는 쿼리를 실행해 보겠습니다.

mysql> SELECT SUBSTRING_INDEX(StudentFullName, ' ', 1) AS FirstWord FROM DemoTable;

실행 결과, 각 이름의 첫 번째 단어만 깔끔하게 출력되는 것을 확인할 수 있습니다.

+-----------+
| FirstWord |
+-----------+
| John      |
| Carol     |
| Bob       |
| David     |
+-----------+
4 rows in set (0.00 sec)

추가 팁: 마지막 단어 추출하기

반대로 성(Last Name)처럼 마지막 단어를 추출하고 싶다면 세 번째 인자를 -1로 지정하면 됩니다.

SELECT SUBSTRING_INDEX(StudentFullName, ' ', -1) AS LastWord FROM DemoTable;

이처럼 SUBSTRING_INDEX()는 구분자 기준으로 원하는 위치의 문자열을 손쉽게 잘라낼 수 있어, 이름 분리, 태그 파싱 등 다양한 상황에서 유용하게 활용할 수 있습니다.