नेस्टेड SUBSTRING_INDEX() और स्ट्रिंग फंक्शन्स का उपयोग करके पूरे नाम को पहला, मध्य और अंतिम नाम में विभाजित किया जा सकता है।
नमूना डेटा: customerdetail टेबल
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 |
+----------------------+----------------------+----------+---------------------+
विभाजन क्वेरी
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;
परिणाम
+----------------------+------------+-------------+-----------+----------+
| 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: पहला शब्द (पहले स्पेस से पहले)
- Middle_Name: यदि 2 से अधिक स्पेस हैं तो दूसरा शब्द, अन्यथा NULL
- Last_Name: तीसरा शब्द (या अंतिम शब्द)
सीमाएं
- केवल स्पेस डिलीमिटर मानता है
- एक से अधिक मध्य नाम होने पर केवल दूसरा शब्द लेता है
- अधिक जटिल पार्सिंग के लिए एप्लिकेशन लेयर (PHP, Python आदि) बेहतर