MySQL에서 문자열의 마지막 점(.) 뒤에 있는 부분 문자열을 가져오려면 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수는 지정한 구분자를 기준으로 문자열을 나누고, 세 번째 인자인 count 값에 따라 원하는 부분만 반환합니다. 특히 count가 음수(-1)이면 구분자를 오른쪽에서부터 찾기 때문에, 마지막 점 뒤의 내용을 손쉽게 추출할 수 있습니다.
1. 예제 테이블 생성
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1341
-> (
-> Value varchar(60)
-> );
Query OK, 0 rows affected (0.75 sec)
2. 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다. 점이 여러 개 포함된 다양한 형태의 문자열을 넣어 보겠습니다.
mysql> insert into DemoTable1341 values('John.123.@gmail.com');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable1341 values('Carol.Taylor.gmail');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable1341 values('C.MyFolder.Location');
Query OK, 1 row affected (0.10 sec)3. 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1341;
위 쿼리는 아래와 같은 결과를 출력합니다.
+---------------------+
| Value |
+---------------------+
| John.123.@gmail.com |
| Carol.Taylor.gmail |
| C.MyFolder.Location |
+---------------------+
3 rows in set (0.00 sec)
4. 마지막 점 뒤의 부분 문자열 추출 쿼리
이제 SUBSTRING_INDEX() 함수에 구분자로 점('.')을, count 값으로 -1을 지정하여 마지막 점 뒤의 문자열을 가져오는 쿼리를 실행해 보겠습니다.
mysql> select substring_index(Value, '.', -1) from DemoTable1341;
5. 실행 결과
쿼리 실행 결과는 다음과 같습니다. 각 문자열에서 마지막 점 뒤에 위치한 부분만 정확히 추출된 것을 확인할 수 있습니다.
+---------------------------------+
| substring_index(Value, '.', -1) |
+---------------------------------+
| com |
| gmail |
| Location |
+---------------------------------+
3 rows in set (0.00 sec)
SUBSTRING_INDEX 함수 정리
SUBSTRING_INDEX(문자열, 구분자, count) 형식으로 사용하며, 동작 방식은 다음과 같습니다.
- count가 양수일 때: 왼쪽(앞)에서부터 count번째 구분자까지의 모든 내용을 반환합니다.
- count가 음수일 때: 오른쪽(뒤)에서부터 count번째 구분자 이후의 모든 내용을 반환합니다.
- 구분자를 찾지 못할 경우: 원본 문자열 전체가 그대로 반환됩니다.
예를 들어 파일 확장자 추출, 도메인 최상위 레벨(TLD) 확인, 경로의 마지막 폴더명 가져오기 등 실무에서 다양하게 활용할 수 있는 유용한 함수입니다.