名称字段有这种格式的全名lastname,First Name
我想将它们更改为firstname(space)lastname
请帮忙。提取名字和姓氏
正在尝试获取SQL语法来完成此任务。 例如名称出现在这样的'林肯,亚伯拉罕”或‘林肯,亚伯拉罕的名字列。’ 我想创造另一列,这将有名字像这样的‘亚伯拉罕·林肯’
名称字段有这种格式的全名lastname,First Name
我想将它们更改为firstname(space)lastname
请帮忙。提取名字和姓氏
正在尝试获取SQL语法来完成此任务。 例如名称出现在这样的'林肯,亚伯拉罕”或‘林肯,亚伯拉罕的名字列。’ 我想创造另一列,这将有名字像这样的‘亚伯拉罕·林肯’
这将是一个更好的设计有first_name
和last_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 |
+---------------------+-----------+------------+
即使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)));
谢谢..但是我得到这个错误Msg 195,Level 15,State 10,Line 3 'SUBSTRING_INDEX'不是一个公认的内置函数名称。和消息195,第15级,状态10,第3行 “TRIM”不是公认的内置函数名称。 –
它工作正常,你可以在这里验证:http://sqlfiddle.com/#!2/b7ff68/1/0 –
@ user3518233我认为你使用MS SQL Server而不是MySQL。这是一个典型的MS SQL Server错误消息。 – VMai
可以请介绍一下您的问题详细,所以我们可以帮助你很好的方法.. :) –
一个干净的数据库定义会分离first name和last命名到不同的领域。 – glglgl