Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Trích xuất tên miền (domain) từ email trong MySQL bằng SUBSTRING_INDEX

Để lấy phần tên miền (domain) từ địa chỉ email (ví dụ: từ user@gmail.com lấy gmail), MySQL cung cấp hàm SUBSTRING_INDEX() rất tiện lợi. Hàm này trả về chuỗi con trước hoặc sau lần xuất hiện thứ N của một ký tự phân tách.

Tạo bảng và chèn dữ liệu email

mysql> CREATE TABLE DemoTable (
    UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserMailId VARCHAR(200)
);

mysql> INSERT INTO DemoTable (UserMailId) VALUES 
('John9989@facebook.com'), 
('983773CS@yahoo.com'), 
('Chris95@gmail.com');

Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+--------+-----------------------+
| UserId | UserMailId            |
+--------+-----------------------+
|      1 | John9989@facebook.com |
|      2 | 983773CS@yahoo.com    |
|      3 | Chris95@gmail.com     |
+--------+-----------------------+

Truy vấn trích xuất tên miền

Sử dụng SUBSTRING_INDEX lồng nhau: lần đầu tách lấy phần sau @, lần hai tách lấy phần trước dấu chấm . đầu tiên.

mysql> SELECT UserId, UserMailId, 
       SUBSTRING_INDEX(SUBSTRING_INDEX(UserMailId, '@', -1), '.', 1) AS Domain_Name 
FROM DemoTable;

Kết quả

+--------+-----------------------+-------------+
| UserId | UserMailId            | Domain_Name |
+--------+-----------------------+-------------+
|      1 | John9989@facebook.com | facebook    |
|      2 | 983773CS@yahoo.com    | yahoo       |
|      3 | Chris95@gmail.com     | gmail       |
+--------+-----------------------+-------------+

Giải thích

  • SUBSTRING_INDEX(UserMailId, '@', -1): Lấy chuỗi con sau ký tự @ cuối cùng (phần domain + TLD).
  • SUBSTRING_INDEX(..., '.', 1): Từ kết quả trên, lấy chuỗi con trước dấu chấm . đầu tiên (chỉ lấy tên miền, bỏ phần mở rộng như .com, .net).

Cách này hiệu quả, không cần biểu thức chính quy phức tạp.