0

我认为这很容易……也许不会。我有一个带有“全名”的表,我想将名字和姓氏分成 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]

4

3 回答 3

0

您可以只更新表并将列设置为fullname

update MyTable
set fname = SUBSTRING_INDEX(SUBSTRING_INDEX(`fullname` ,' ', 2) ,' ' ,-1),
    lname = SUBSTRING_INDEX(`fullname` ,' ', 1)
于 2013-02-12T14:42:10.093 回答
0

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

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

请参阅带有演示的 SQL Fiddle

于 2013-02-12T14:47:02.137 回答
0

您想更新为名字和姓氏值,那么您需要使用 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))
于 2013-02-12T14:53:01.173 回答