이메일 주소에서 도메인 이름(gmail.com, yahoo.com 등)만 추출하고 싶다면 MySQL의 SUBSTRING_INDEX() 함수를 사용하면 됩니다. 이 함수는 구분자를 기준으로 문자열을 나누어 원하는 부분만 반환해 줍니다.
1. 테이블 생성
먼저 예제에 사용할 테이블을 만들어 보겠습니다.
mysql> create table DemoTable
-> (
-> UserMailId varchar(100)
-> );
Query OK, 0 rows affected (0.68 sec)
2. 데이터 삽입
INSERT 명령을 사용하여 테이블에 샘플 이메일 데이터를 입력합니다.
mysql> insert into DemoTable values('John@gmail.com');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('Carol94844@yahoo.com');
Query OK, 1 row affected (0.25 sec)3. 전체 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+----------------------+
| UserMailId |
+----------------------+
| John@gmail.com |
| Carol94844@yahoo.com |
+----------------------+
2 rows in set (0.00 sec)
4. 도메인 이름 추출 쿼리
이제 SUBSTRING_INDEX() 함수를 활용하여 '@' 기호 뒤에 있는 도메인 이름만 가져오는 쿼리입니다. 세 번째 인자로 -1을 지정하면 구분자 기준 오른쪽(뒤쪽) 값을 반환합니다.
mysql> select substring_index(UserMailId,'@',-1) as RightSideValue from DemoTable;
실행 결과는 다음과 같습니다.
+----------------+
| RightSideValue |
+----------------+
| gmail.com |
| yahoo.com |
+----------------+
2 rows in set (0.00 sec)
SUBSTRING_INDEX() 함수 설명
SUBSTRING_INDEX(문자열, 구분자, 위치) 형식으로 사용하며, 각 인자의 의미는 다음과 같습니다.
- 문자열: 대상이 되는 컬럼 또는 값 (예: UserMailId)
- 구분자: 문자열을 나눌 기준 값 (예: '@')
- 위치: 양수일 경우 왼쪽부터 N번째 앞부분, 음수일 경우 오른쪽부터 N번째 뒷부분을 반환
예를 들어 substring_index(UserMailId,'@',1)처럼 양수를 사용하면 '@' 앞의 아이디 부분(John, Carol94844)을 추출할 수 있습니다. 반대로 -1을 사용하면 위 예제처럼 도메인 부분만 깔끔하게 분리됩니다.