2013-02-12 79 views
0

我认为这很容易......也许不是。我有一个'全名'的表,我想把名字和姓氏分成2列(fname和lname)。MySQL拆分单列

下面的语法给我我想要的数据:

SELECT 
`fullname` , 
SUBSTRING_INDEX(SUBSTRING_INDEX(`fullname` ,' ', 2) ,' ' ,-1) AS fname, 
SUBSTRING_INDEX(`fullname` ,' ', 1)AS lname 
FROM MyTable 

...但我怎么然后采取“FNAME”和“L-NAME”的字段,并将它们保存在同一个表中分离列?

[示例数据 - 如果人的名字是约翰·迈克尔·琼斯“全名”字段是这样的:JONES约翰·迈克尔]

回答

0

您只需更新您的表和列设置的子字符串fullname

update MyTable 
set fname = SUBSTRING_INDEX(SUBSTRING_INDEX(`fullname` ,' ', 2) ,' ' ,-1), 
    lname = SUBSTRING_INDEX(`fullname` ,' ', 1) 
0

如果你想在同一个表进行更新,你可以使用以下命令:

update mytable 
set fname = SUBSTRING_INDEX(SUBSTRING_INDEX(`fullname` ,' ', 2) ,' ' ,-1), 
    lname = SUBSTRING_INDEX(`fullname` ,' ', 1) 

SQL Fiddle with Demo,你要更新到名字ANS姓氏值

0

,那么你需要使用的更新:

update MyTable 
set fname = SUBSTRING_INDEX(SUBSTRING_INDEX(`fullname` ,' ', 2) ,' ' ,-1), 
    lname = SUBSTRING_INDEX(`fullname` ,' ', 1) 

,如果你想用大写来设置,则用户上的功能以及

update MyTable 
    set fname = upper(SUBSTRING_INDEX(SUBSTRING_INDEX(`fullname` ,' ', 2) ,' ' ,-1)), 
     lname = upper(SUBSTRING_INDEX(`fullname` ,' ', 1))