2016-02-24 38 views
0

我有一些數據,如下圖所示:將選擇值到新屬性的PostgreSQL

full_name  

R Davies 
N Powell 
Harry S 
A J Fulham 

我想將名字從第一空間分割和值插入的名字及姓氏。所以它將如下所示:

forename  surname 

R    Davies 
N    Powell 
Harry   S 
A    J Fulham 

我寫的代碼只是創建新列和刪除舊列。我已經設法創建一個select語句來查看forename,但是我無法將其插入。 所以我需要代碼將兩個值插入到新列以及獲取姓氏。

ALTER TABLE names add forename varchar(100) 
ALTER TABLE names add surname varchar(100) 

UPDATE names 
INSERT INTO names(forename) 
SELECT split_part(full_name, ' ', 1) FROM names 

ALTER TABLE names DROP COLUMN full_name; 

回答

1

需要一個UPDATE

UPDATE names 
    set forename = split_part(full_name, ' ', 1), 
     surname = split_part(full_name, ' ', 2) 

insert僅用於創建(插入)新

+0

謝謝你有點工作!它能夠將這些值放入正確的位置,但是當「全名」是「AJ Fulham」或類似名稱時,名字是「A」,姓氏只是「J」,是否有辦法獲取所有部分第一個空間之後? – Unfitacorn

+0

@Unfitacorn:請爲此創建一個新問題。 –