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

Tách họ, tên đệm, tên bằng SUBSTRING_INDEX() trong MySQL

Sử dụng SUBSTRING_INDEX() lồng nhau để tách chuỗi họ tên thành 3 phần: First_Name, Middle_Name, Last_Name.

Dữ liệu mẫu

mysql> SELECT * FROM customerdetail;
+----------------------+----------------------+----------+---------------------+
| Name                 | FName                | Address  | Emailid             |
+----------------------+----------------------+----------+---------------------+
| Advik Jhamb          | Lovkesh Jhamb        | Mumbai   | Advik@gmail.com     |
| Chirag Jai Patil     | Raman Jai Patil      | Gujrat   | chirahp@yahoo.com   |
| Devansh Singh Rajput | Kishore Singh Rajput | Rajastan | Devansh@Hotmail.com |
| Mitul Kumar Sharma   | Om Veer Sharma       | Patiala  | Mitul@gmail.com     |
+----------------------+----------------------+----------+---------------------+

Truy vấn tách 3 phần

mysql> SELECT 
    Name,
    SUBSTRING_INDEX(SUBSTRING_INDEX(Name, ' ', 1), ' ', -1) AS First_Name,
    IF(LENGTH(Name) - LENGTH(REPLACE(Name, ' ', '')) > 1,
       SUBSTRING_INDEX(SUBSTRING_INDEX(Name, ' ', 2), ' ', -1),
       NULL) AS Middle_Name,
    SUBSTRING_INDEX(SUBSTRING_INDEX(Name, ' ', 3), ' ', -1) AS Last_Name,
    Address
FROM customerdetail;

Kết quả

+----------------------+------------+-------------+-----------+----------+
| Name                 | First_Name | Middle_Name | Last_Name | Address  |
+----------------------+------------+-------------+-----------+----------+
| Advik Jhamb          | Advik      | NULL        | Jhamb     | Mumbai   |
| Chirag Jai Patil     | Chirag     | Jai         | Patil     | Gujrat   |
| Devansh Singh Rajput | Devansh    | Singh       | Rajput    | Rajastan |
| Mitul Kumar Sharma   | Mitul      | Kumar       | Sharma    | Patiala  |
+----------------------+------------+-------------+-----------+----------+

Giải thích:

  • First_Name: Từ đầu tiên (count=1)
  • Middle_Name: Nếu có >1 khoảng trắng thì lấy từ thứ 2, else NULL
  • Last_Name: Từ thứ 3 (hoặc cuối cùng nếu chỉ 2 từ)