2014-05-01 290 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