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 쿼리만으로 이메일 주소에서 도메인 이름을 간편하게 추출할 수 있습니다.