如何将MySQL中的逗号分隔名称字段分隔为名字,中间名,姓氏和全名?

时间:2015-04-09 02:17:13

标签: mysql database database-administration

我有一个NAME列,数据存储在MySql数据库中:

  

Doe,John P

我想将其分解为FNAME LNAME MNAMEFULLNAME

如果我不想篡改SQL表,我应该创建一个视图吗?

我知道如何使用函数在PHP中修复它,但我宁愿在数据库服务器上完成处理而不是应用程序服务器。

这是我到目前为止所拥有的。我认为我需要复合查询或类似的东西。

SELECT Name
       , SUBSTRING_INDEX(Name,',',-1) As FNAME
       , SUBSTRING_INDEX(Name,',',1)  As LNAME
       , SUBSTRING_INDEX(Name,' ',1)  As MNAME 
  FROM people;

我无法抓住中间名并执行我认为应该CONCAT的功能来获取FULLNAME

如果有一种方法(可能是有条件的)来处理数据库中没有中间名的名称,那将会很棒。 (即DOE,JOHN)。

1 个答案:

答案 0 :(得分:0)

视图是获取未来查询所需结果的好方法。定义查询将是:

SELECT Name, SUBSTRING_INDEX(SUBSTRING_INDEX(Name, ',', -1), ' ', 1)  As FNAME,
       SUBSTRING_INDEX(Name, ',', 1)  As LNAME,
       SUBSTRING_INDEX(Name, ' ', -1)  As MNAME
FROM people;

这将假设格式完全正确,因为您在表中描述它。小的更改 - 例如没有中间名或逗号后的空格 - 会使语法更复杂。