2014-05-01 340 views
-3

名稱字段有這種格式的全名lastname,First Name 我想將它們更改爲firstname(space)lastname 請幫忙。提取名字和姓氏

正在嘗試獲取SQL語法來完成此任務。 例如名稱出現在這樣的'林肯,亞伯拉罕」或‘林肯,亞伯拉罕的名字列。’ 我想創造另一列,這將有名字像這樣的‘亞伯拉罕·林肯’

+1

可以請介紹一下您的問題詳細,所以我們可以幫助你很好的方法.. :) –

+1

一個乾淨的數據庫定義會分離first name和last命名到不同的領域。 – glglgl

回答

2

這將是一個更好的設計有first_namelast_name如表中的兩個不同的領域
您可以添加這些新列如下圖所示:。

ALTER TABLE table_name 
    ADD COLUMN first_name VARCHAR(255) 
    , ADD COLUMN last_name VARCHAR(255) 

從現有full_name_column提取添加這些列,您可以複製到它們的值後

update table_name 
    set first_name = trim(substring_index(full_name_column, ',', -1)) 
     , last_name = trim(substring_index(full_name_column, ',', 1)) 

:使用substring_index

mysql> select @n:=' Lincoln, Abraham ' name 
    ->  , trim(substring_index(@n, ',', 1)) last_name 
    ->  , trim(substring_index(@n, ',', -1)) first_name; 
+---------------------+-----------+------------+ 
| name    | last_name | first_name | 
+---------------------+-----------+------------+ 
| Lincoln, Abraham | Lincoln | Abraham | 
+---------------------+-----------+------------+ 
0

即使Ravinder已爲您提供更好的解決方案,並通過適當的解釋,但如果還是由於你想你永遠那麼需要什麼,你可以在下面用一些理由查詢:

ALTER TABLE MyTable ADD COLUMN `New_Name` VARCHAR(150); 

UPDATE MyTable 
SET `New_Name`= CONCAT(TRIM(SUBSTRING_INDEX(`Name`, ',', -1)),' ',TRIM(SUBSTRING_INDEX(`Name`, ',', 1))); 
+0

謝謝..但是我得到這個錯誤Msg 195,Level 15,State 10,Line 3 'SUBSTRING_INDEX'不是一個公認的內置函數名稱。和消息195,第15級,狀態10,第3行 「TRIM」不是公認的內置函數名稱。 –

+0

它工作正常,你可以在這裏驗證:http://sqlfiddle.com/#!2/b7ff68/1/0 –

+0

@ user3518233我認爲你使用MS SQL Server而不是MySQL。這是一個典型的MS SQL Server錯誤消息。 – VMai