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

MySQL에서 substring_index()로 도메인 이름 추출하는 방법

MySQL에서 이름(이메일 주소)을 전달하여 도메인 이름을 가져오려면 substring_index() 함수를 사용하면 됩니다. 이 함수는 문자열을 특정 구분자를 기준으로 분리하여 원하는 부분만 추출할 수 있어, 이메일 주소에서 도메인 부분을 손쉽게 얻을 때 유용합니다.

1. 테이블 생성

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserMailId varchar(200)
);
Query OK, 0 rows affected (0.77 sec)

2. 데이터 삽입

insert 명령을 사용하여 테이블에 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable(UserMailId) values('John9989@facebook.com');
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable(UserMailId) values('983773CS@yahoo.com');
Query OK, 1 row affected (0.23 sec)

mysql> insert into DemoTable(UserMailId) values('Chris95@gmail.com');
Query OK, 1 row affected (0.20 sec)

3. 저장된 데이터 확인

select 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------+-----------------------+
| UserId | UserMailId |
+--------+-----------------------+
| 1 | John9989@facebook.com |
| 2 | 983773CS@yahoo.com |
| 3 | Chris95@gmail.com |
+--------+-----------------------+
3 rows in set (0.00 sec)

4. 도메인 이름 추출 쿼리

다음은 MySQL에서 이름을 전달하여 도메인 이름을 가져오는 쿼리입니다.

mysql> select
UserId,UserMailId,
substring_index(substring_index(UserMailId, '@', -1), '.', 1) AS `Domain_Name`
from DemoTable;

5. 실행 결과

위 쿼리를 실행하면 다음과 같이 도메인 이름이 정상적으로 추출됩니다.

+--------+-----------------------+-------------+
| UserId | UserMailId | Domain_Name |
+--------+-----------------------+-------------+
| 1 | John9989@facebook.com | facebook |
| 2 | 983773CS@yahoo.com | yahoo |
| 3 | Chris95@gmail.com | gmail |
+--------+-----------------------+-------------+
3 rows in set (0.01 sec)

동작 원리 설명

이 쿼리가 작동하는 방식은 다음과 같습니다.

substring_index(UserMailId, '@', -1): '@' 기호를 기준으로 문자열을 나누고, 마지막(-1) 부분 즉 '@' 뒤의 전체 도메인('facebook.com' 등)을 반환합니다.
substring_index(..., '.', 1): 그 결과에서 '.'을 기준으로 첫 번째(1) 부분, 즉 최상위 도메인 확장자(.com)를 제외한 순수 도메인 이름('facebook', 'yahoo', 'gmail')만 추출합니다.

이처럼 substring_index() 함수를 중첩하여 사용하면 별도의 애플리케이션 로직 없이 SQL 쿼리만으로 이메일 주소에서 도메인 이름을 간편하게 추출할 수 있습니다.