MySQL 如何使用MySQL 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 |
+----------------------+----------------------+----------+---------------------+
4 rows in set (0.00 sec)
现在,假设我们要将名字分为三部分,“First_name”,Middle_Name和“Last_name”,则可以使用以下查询来完成。
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 |
+----------------------+------------+-------------+-----------+----------+
4 rows in set (0.00 sec)
从上面查询的结果集可以清楚地看出,名字已经被分成了三个部分。如果名字不含有中间名,它会将中间名视为空。
阅读更多:MySQL 教程
极客教程