MySQL에서 이메일 주소에서 @ 기호 앞에 있는 모든 문자(사용자 ID 부분)를 추출하려면 SUBSTRING_INDEX 함수를 사용하면 됩니다. 이 함수는 지정한 구분자를 기준으로 문자열을 나누어 원하는 위치의 값을 반환합니다.
SUBSTRING_INDEX 기본 문법
select substring_index(yourColumnName,'@',1) from yourTableName;
세 번째 인자인 1은 구분자(@)를 기준으로 첫 번째 부분, 즉 @ 앞쪽의 문자열을 가져오라는 의미입니다.
예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable -> ( -> EmployeeMailId varchar(100) -> ); Query OK, 0 rows affected (0.52 sec)
샘플 데이터 삽입하기
INSERT 명령을 사용하여 이메일 주소 데이터를 몇 개 입력합니다.
mysql> insert into DemoTable values('Larry123@gmail.com');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('987Sam@hotmail.com');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('123456David_98@gmail.com');
Query OK, 1 row affected (0.20 sec)저장된 데이터 확인하기
SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+--------------------------+ | EmployeeMailId | +--------------------------+ | Larry123@gmail.com | | 987Sam@hotmail.com | | 123456David_98@gmail.com | +--------------------------+ 3 rows in set (0.00 sec)
@ 앞부분만 추출하는 쿼리 실행하기
이제 SUBSTRING_INDEX 함수를 적용하여 이메일 주소에서 @ 앞의 문자열만 선택하는 쿼리는 다음과 같습니다.
mysql> select substring_index(EmployeeMailId,'@',1) from DemoTable;
출력 결과
+---------------------------------------+ | substring_index(EmployeeMailId,'@',1) | +---------------------------------------+ | Larry123 | | 987Sam | | 123456David_98 | +---------------------------------------+ 3 rows in set (0.00 sec)
실행 결과를 보면 각 이메일 주소에서 도메인 부분(gmail.com, hotmail.com)은 제외되고 @ 앞의 사용자 ID만 정확히 추출된 것을 확인할 수 있습니다. 만약 반대로 @ 뒤의 도메인 부분을 추출하고 싶다면 세 번째 인자를 -1로 변경하면 됩니다.