【问题标题】:How to separate a comma separated name field in MySQL in to first name, middle name, last name and fullname?如何在 MySQL 中将逗号分隔的名称字段分隔为名字、中间名、姓氏和全名?
【发布时间】:2015-04-09 02:17:13
【问题描述】:

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

Doe,约翰 P

我想把它分解成FNAMELNAMEMNAMEFULLNAME

如果不想篡改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)。

【问题讨论】:

标签: mysql database database-administration


【解决方案1】:

视图是获得您想要的结果以供将来查询的好方法。定义查询是:

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;

假设格式完全正确,如您在表格中描述的那样,这将起作用。小的变化——例如没有中间名或逗号后的空格——会使语法更加复杂。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    相关资源
    最近更新 更多