MySQL拆分单列

时间:2013-02-12 14:40:20

标签: mysql

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

以下语法为我提供了我想要的数据:

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

...但是,如何将'fname'和'lname'字段保存到同一个表中的不同列?

[示例数据 - 如果人名是John Michael Jones,'全名'字段如下所示:JONES JOHN MICHAEL]

3 个答案:

答案 0 :(得分:0)

您只需更新表格并将列设置为fullname

的子字符串即可
update MyTable
set fname = SUBSTRING_INDEX(SUBSTRING_INDEX(`fullname` ,' ', 2) ,' ' ,-1),
    lname = SUBSTRING_INDEX(`fullname` ,' ', 1)

答案 1 :(得分:0)

如果要在同一个表上执行更新,可以使用以下命令:

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

请参阅SQL Fiddle with Demo

答案 2 :(得分:0)

要更新为firstname和lastname值,则需要使用update:

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))