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

MySQL에서 이메일 주소의 @ 앞부분만 추출하는 방법

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로 변경하면 됩니다.