Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แยกชื่อเป็น 3 ส่วน (First, Middle, Last) ด้วย SUBSTRING_INDEX

ข้อมูลตัวอย่าง: ตาราง 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     |
+----------------------+----------------------+----------+---------------------+

คำสั่ง SQL แยก 3 ส่วน

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;

ผลลัพธ์

+----------------------+------------+-------------+-----------+----------+
| 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  |
+----------------------+------------+-------------+-----------+----------+

การอธิบาย

  • First_Name: SUBSTRING_INDEX สองชั้น นับ space ตัวแรก
  • Middle_Name: IF ตรวจว่ามี space มากกว่า 1 ครั้ง ถ้ามี 취ส่วนกลาง
  • Last_Name: ส่วนหลัง space ตัวที่ 3 (หรือตัวสุดท้าย)
  • ชื่อที่ไม่มี Middle name จะได้ NULL