WITH t AS
(
SELECT 'first last middleinitial' AS name
)
SELECT
LEFT(name,CHARINDEX(' ', name)-1)
,RIGHT(name, CHARINDEX(' ', REVERSE(name))-1)
,LTRIM(RTRIM(SUBSTRING(name,CHARINDEX(' ', name),LEN(name)- CHARINDEX(' ', REVERSE(name))-CHARINDEX(' ', name))))
FROM t