如何在mysql中将姓氏和名字分成两个新列?

如何在mysql中将姓氏和名字分成两个新列?,mysql,sql,string,Mysql,Sql,String,如何将姓氏和名字分隔成新的列 我把“约翰和安娜史密斯”放在一列,我需要把它分成“约翰和安娜”和“史密斯”两列。我该怎么做 当我们从左边走时,没有分隔符。从右边开始,分隔符是空格。最后一个子字符串始终是姓氏。其余的是名字 例如: “约翰·史密斯”->“约翰”在第一栏,而“史密斯”在第二栏 “约翰和安娜史密斯”->“约翰和安娜”在第一栏,而“史密斯”在第二栏 SELECT REPLACE('John & Anna Smith', SUBSTRING_INDEX('John & Ann

如何将姓氏和名字分隔成新的列

我把“约翰和安娜史密斯”放在一列,我需要把它分成“约翰和安娜”和“史密斯”两列。我该怎么做

当我们从左边走时,没有分隔符。从右边开始,分隔符是空格。最后一个子字符串始终是姓氏。其余的是名字

例如:

“约翰·史密斯”->“约翰”在第一栏,而“史密斯”在第二栏


“约翰和安娜史密斯”->“约翰和安娜”在第一栏,而“史密斯”在第二栏

SELECT REPLACE('John & Anna Smith', SUBSTRING_INDEX('John & Anna Smith', ' ', -1),'') AS first_name, SUBSTRING_INDEX('John & Anna Smith', ' ', -1) AS last_name;
例如: “约翰·史密斯”->“约翰”在第一栏,而“史密斯”在第二栏 “约翰和安娜·史密斯”->“约翰和安娜”在第1栏,而“史密斯”在第2栏

您必须提出规则规则集(以涵盖其他可能性)才能裁剪出名称。一种方法是在某些config/xml/table中维护规则,这样即使遇到其他类型的分隔符/分隔符或条件,也可以在其中添加规则


您可以从查找名称中的最后一个空格开始。例如,在上面的例子中,您正在用字符串中的最后一个空格拆分文本。

分隔符是什么,一旦是第二个&,一旦是空格……手工操作-没有任何东西可以涵盖所有可能性。@OMG Ponies-我有150万条记录:(对此我无能为力。若你们想要数据质量,你们必须付出努力。我该如何根据名称中的最后一个空格分割文本?我正在尝试这样做,但我是如何做到的?@Shyam Natraj Kanagasabapathy:你们可能会在这方面找到一些帮助。有可能用一列中的所有记录替换查询中的“John&Anna Smith”吗?以及还要将结果集添加到当前表中吗?这只是一个想法。您可以在rest中执行。无论如何,要更新表,您必须执行以下操作,
updatetable\u name set first\u name=REPLACE(name\u字段,SUBSTRING\u索引(name\u字段,,-1),last\u name=SUBSTRING\u索引(name\u字段,,-1)
注意:此查询未经测试。