--This works for data which may have a middle name, middle initial or just a first and last name. I am not dealing with suffixes (i.e. Jr, Sr, III, etc) and I am assuming data is always first, middle, last. The answer box doesn't like CTE's so I am submitting it with a subquery.
SELECT [payerName],
frst, scnd, thrd,
LEFT(payerName, CHARINDEX(' ', payerName)) AS FirstName,
CASE WHEN Scnd > 0
THEN SUBSTRING(payerName, frst + 1, scnd - frst)
ELSE '' END AS MiddleName,
CASE WHEN Scnd = 0 THEN SUBSTRING(payerName, thrd + 1, 50)
ELSE SUBSTRING(payerName, scnd + 1, 50)
END AS LastName
FROM (
SELECT [payerName],
LEFT(payerName, CHARINDEX(' ', payerName)) AS FirstName,
CHARINDEX(' ', TRIM(payerName)) AS Frst,
CHARINDEX(' ', TRIM(payerName), CHARINDEX(' ', TRIM(payerName))+1) AS Scnd,
CHARINDEX(' ', TRIM(payerName), CHARINDEX(' ', TRIM(payerName)) + CHARINDEX(' ', TRIM(payerName), CHARINDEX(' ', TRIM(payerName))+1)) AS Thrd
FROM [AccountDeduction]
) rex
Result:
payerName frst scnd thrd FirstName MiddleName LastName
Grant E Corbin 6 8 0 Grant E Corbin
Alcena Winston 7 0 7 Alcena Winston
Jeff Crosby 5 0 5 Jeff Crosby
Carolyn Tillage 8 0 8 Carolyn Tillage