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

MySQL에서 공백 뒤의 모든 문자열 삭제하기 – SUBSTRING_INDEX() 함수 활용법

MySQL에서 특정 컬럼(필드)의 값 중 공백 이후에 오는 모든 문자열을 제거하고 싶다면 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수는 구분자를 기준으로 문자열을 잘라내어 원하는 부분만 손쉽게 추출할 수 있게 해줍니다.

SUBSTRING_INDEX() 기본 문법

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

위 문법에서 세 번째 인자인 1은 공백을 기준으로 첫 번째 부분까지만 반환하라는 의미입니다. 즉, 공백 뒤의 모든 내용이 자동으로 제거됩니다.

예제 테이블 생성하기

실제 동작을 확인하기 위해 먼저 예제용 테이블을 만들어 보겠습니다. 아래 쿼리로 테이블을 생성합니다.

mysql> CREATE TABLE deleteAfterSpaceDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName varchar(100)
    -> );
Query OK, 0 rows affected (0.55 sec)

샘플 데이터 삽입하기

INSERT 명령을 사용해 학생 이름 데이터를 몇 개 추가합니다. 이름과 성이 공백으로 구분된 형태입니다.

mysql> INSERT INTO deleteAfterSpaceDemo(StudentName) VALUES('John Smith');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO deleteAfterSpaceDemo(StudentName) VALUES('Adam Smith');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO deleteAfterSpaceDemo(StudentName) VALUES('Carol Taylor');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO deleteAfterSpaceDemo(StudentName) VALUES('Chris Brown');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO deleteAfterSpaceDemo(StudentName) VALUES('David Miller');
Query OK, 1 row affected (0.15 sec)

저장된 전체 데이터 조회하기

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> SELECT * FROM deleteAfterSpaceDemo;

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

+----+--------------+
| Id | StudentName  |
+----+--------------+
| 1  | John Smith   |
| 2  | Adam Smith   |
| 3  | Carol Taylor |
| 4  | Chris Brown  |
| 5  | David Miller |
+----+--------------+
5 rows in set (0.00 sec)

공백 뒤의 문자열 삭제 쿼리 실행하기

이제 SUBSTRING_INDEX()를 적용하여 공백 뒤의 모든 내용을 제거한 결과를 조회해 보겠습니다.

mysql> SELECT SUBSTRING_INDEX(StudentName, ' ', 1) AS deleteAllAfterSpace FROM deleteAfterSpaceDemo;

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

+---------------------+
| deleteAllAfterSpace |
+---------------------+
| John                |
| Adam                |
| Carol               |
| Chris               |
| David               |
+---------------------+
5 rows in set (0.04 sec)

결과 정리

출력 결과를 보면 'John Smith'가 'John'으로, 'Carol Taylor'가 'Carol'로 변환된 것을 확인할 수 있습니다. 이처럼 SUBSTRING_INDEX(컬럼명, ' ', 1)을 사용하면 공백 앞쪽의 첫 번째 단어만 남기고 나머지는 모두 제거할 수 있습니다.

참고로 실제 테이블의 데이터를 영구적으로 변경하려면 UPDATE 문과 함께 사용하면 됩니다.

UPDATE yourTableName SET yourColumnName = SUBSTRING_INDEX(yourColumnName, ' ', 1);

또한 마지막 인자 값을 조절하면 원하는 위치까지의 문자열을 유연하게 추출할 수 있습니다. 예를 들어 -1을 넣으면 구분자 기준 마지막 부분을, 2를 넣으면 두 번째 구분자까지의 문자열을 반환합니다.