2011-05-23 171 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

相關問題