MySQL에서 마지막 공백 왼쪽의 모든 텍스트 추출하기
이름(FullName)처럼 공백을 포함한 문자열에서 마지막 공백을 기준으로 왼쪽에 있는 모든 내용을 추출하려면 LEFT(), LENGTH(), LOCATE(), REVERSE() 함수를 조합하면 됩니다. 예를 들어 'Adam Smith'에서 'Adam'만, 'Robert Downey, Jr.'에서 'Robert Downey,'만 가져오는 방식입니다.
1. 테이블 생성
먼저 테이블을 생성합니다.
mysql> create table DemoTable1939
(
FullName varchar(20)
);
Query OK, 0 rows affected (0.00 sec)2. 레코드 삽입
insert 명령으로 샘플 데이터를 입력합니다.
mysql> insert into DemoTable1939 values('Adam Smith');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1939 values('Robert Downey, Jr.');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1939 values('Sylvester Stallone');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1939 values('Chris Hemsworth');
Query OK, 1 row affected (0.00 sec)3. 전체 데이터 확인
select 문으로 저장된 레코드를 조회합니다.
mysql> select * from DemoTable1939;
실행 결과는 다음과 같습니다.
+--------------------+ | FullName | +--------------------+ | Adam Smith | | Robert Downey, Jr. | | Sylvester Stallone | | Chris Hemsworth | +--------------------+ 4 rows in set (0.00 sec)
4. 마지막 공백 왼쪽 텍스트 추출 쿼리
다음은 마지막 공백을 기준으로 왼쪽 부분만 선택하는 쿼리입니다.
mysql> select
LEFT(FullName, LENGTH(FullName) - LOCATE(' ', REVERSE(FullName))+1)
from DemoTable1939;쿼리 동작 원리를 단계별로 살펴보면 다음과 같습니다.
REVERSE(FullName): 문자열을 뒤집어서, 뒤집힌 문자열의 첫 번째 공백이 원래 문자열의 마지막 공백이 되도록 만듭니다.LOCATE(' ', REVERSE(FullName)): 뒤집힌 문자열에서 첫 번째 공백, 즉 원래 문자열의 마지막 공백까지의 상대적 거리를 구합니다.LENGTH(FullName) - LOCATE(...): 전체 길이에서 위 값을 빼면 마지막 공백의 실제 위치를 계산할 수 있습니다.LEFT(FullName, ...): 계산된 위치까지의 문자열, 즉 마지막 공백 왼쪽의 모든 내용을 반환합니다.
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+---------------------------------------------------------------------+
| LEFT(FullName, LENGTH(FullName) - LOCATE(' ', REVERSE(FullName))+1) |
+---------------------------------------------------------------------+
| Adam |
| Robert Downey, |
| Sylvester |
| Chris |
+---------------------------------------------------------------------+
4 rows in set (0.00 sec)이렇게 하면 성(Last Name)을 제외한 이름 부분만 깔끔하게 분리해 낼 수 있습니다. 반대로 마지막 공백 오른쪽의 텍스트가 필요하다면 SUBSTRING_INDEX()나 RIGHT() 함수를 활용하는 방법도 있으니 참고하세요.