Assuming you are using SQL Server (as mentioned in the title), you can use the following query to split the full name into last, first, and middle:
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;
This will output:
LastName | FirstName | MiddleName
-------------------------------------
Holmes | John | Henry
Try it out at: http://sqlfiddle.com/#!18/e78fc/1
[EDIT]
In order to update your existing table such that full name is saved as last, first, and middle, you need to:
(1) Alter the table by adding FirstName, MiddleName, and LastName columns:
alter table Employee
add FirstName varchar(50),
MiddleName varchar(50),
LastName varchar(50);
(2) Update the table by breaking the full name into last, first, and middle:
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) Drop the FullName column:
alter table Employee drop column FullName;
You can try the above sql at sqlfiddle: http://sqlfiddle.com/#!18/a418d/2