提取名字和姓氏

时间:2014-05-01 06:40:37

标签: mysql extract

名称字段的格式为lastname,First Name的全名 我想将它们更改为firstname(space)lastname 请帮忙。

我正在尝试使用SQL语法来完成此任务。 例如,名字出现在名称栏中,如“林肯,亚伯拉罕”或“林肯,亚伯拉罕”。 我想创建另一个名为“Abraham Lincoln”的专栏

2 个答案:

答案 0 :(得分: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    |
+---------------------+-----------+------------+

答案 1 :(得分: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 ) ));