2011-05-23 168 views
3

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

我在一列中有“约翰&安娜史密斯”,我需要将它分成两栏中的“约翰&安娜”&“史密斯”。我该怎么做呢?

当我们从左边走时没有分隔符。虽然我们从正确的分隔符是空间。最后的子字符串总是姓氏。其余的是名字。

例如:

“约翰·史密斯” - > “约翰” 在列1和 “史密斯” 在列2

“约翰&安娜史密斯” ---> “约翰&安娜” 在列1和 “史密斯” 在列2

+0

什么是分隔符,一旦它的第二个&,曾经是一个空格...... – 2011-05-23 05:53:17

+3

手动执行 - 没有任何内容会涵盖所有可能性。 – 2011-05-23 05:53:20

+0

@OMG小马。 lolx .. – 2011-05-23 05:54:24

回答

1

嘿,你可以尝试这样的事情

SELECT REPLACE('John & Anna Smith', SUBSTRING_INDEX('John & Anna Smith', ' ', -1),'') AS first_name, SUBSTRING_INDEX('John & Anna Smith', ' ', -1) AS last_name; 
+1

是否有可能在此查询中将“John&Anna Smith”替换为列中的所有记录并将结果集添加到当前表中 – 2011-05-23 06:34:10

+1

这只是一个想法,您可以继续操作。你必须做这样的事情, 'UPDATE table_name SET first_name = REPLACE(name_field,SUBSTRING_INDEX(name_field,'',-1),last_name = SUBSTRING_INDEX(name_field,'',-1)' 注意:此查询未经测试 – 2011-05-23 07:49:42

1

例如: “约翰·史密斯” - >“约翰”在列1和“史密斯”在列2 “约翰&安娜·史密斯” --->“约翰&安娜”在列1和“史密斯”在列2

您将不得不拿出规则规则集(以涵盖其他可能性),以便能够将名称剪出。一种方法可能是维护一些config/xml/table中的规则,以便您可以在那里添加规则,即使遇到其他类型的分隔符/分隔符或条件。

您可以从查找姓名中的最后一个空格开始。例如,对于上面的示例,您正在将文本与上一个空间拆分为一个字符串。

+1

如何基于最后一个空格分割文本 名字?我正在努力做到这一点,但我该怎么做? – 2011-05-23 06:32:10

+1

@Shyam Natraj Kanagasabapathy:您可能会在[此主题]中找到一些帮助(http://stackoverflow.com/questions/2056558/mysql-substring-that-returns-the-first-occurance-from-the-right-subrstring )。 – 2011-05-23 09:11:28

相关问题