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 NULLLast_Name: Từ thứ 3 (hoặc cuối cùng nếu chỉ 2 từ)