gpt4 book ai didi

arrays - 在 SQL Server 中将一列拆分为多列

转载 作者:行者123 更新时间:2023-12-05 03:06:19 26 4
gpt4 key购买 nike

我有一个名为 Employee 的表,其中包含以下列:

FullName
--------------------
Holmes, John Henry

我想更改表格并将 FullName 变成 LastNameFirstNameMiddleName。我应该使用什么 SQL 命令来做到这一点?我希望得到的结果是这样的:

LastName    FirstName    MiddleName
-----------------------------------
Holmes John Henry

我试过 youtube 视频、论坛和文章,但都无济于事。

任何帮助将不胜感激,因为我刚刚开始使用 SQL。

最佳答案

假设您正在使用 SQL Server(如标题中所述),您可以使用以下查询将全名拆分为姓氏、名字和中间名:

select substring(FullName, 1, patindex('%,%', FullName) - 1) as LastName,
substring(
FullName,
charindex(', ', FullName) + 2,
charindex(' ', FullName, charindex(', ', FullName) + 2) - charindex(', ', FullName) - 2) as FirstName,
substring(FullName, charindex(' ', FullName, charindex(', ', FullName) + 2) + 1, charindex(' ', FullName, -1)) as MiddleName
from Employee;

这将输出:

LastName  |  FirstName  |  MiddleName
-------------------------------------
Holmes | John | Henry

试用:http://sqlfiddle.com/#!18/e78fc/1

[编辑]
为了更新您现有的表格以便将全名保存为姓氏、名字和中间名,您需要:

(1) 通过添加 FirstName、MiddleName 和 LastName 列来更改表:

alter table Employee 
add FirstName varchar(50),
MiddleName varchar(50),
LastName varchar(50);

(2) 通过将全名分为姓氏、名字和中间名来更新表格:

update Employee
set FirstName = substring(
FullName,
charindex(', ', FullName) + 2,
charindex(' ', FullName, charindex(', ', FullName) + 2) - charindex(', ', FullName) - 2),
MiddleName = substring(FullName, charindex(' ', FullName, charindex(', ', FullName) + 2) + 1, charindex(' ', FullName, -1)),
LastName = substring(FullName, 1, patindex('%,%', FullName) - 1);

(3) 删除 FullName 列:

alter table Employee drop column FullName;

你可以在 sqlfiddle: http://sqlfiddle.com/#!18/a418d/2 试试上面的 sql

关于arrays - 在 SQL Server 中将一列拆分为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49467475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com