OK, this is kind of verbose, but I want to illustrate the process step-by-step. basically you search the whole string for the comma to get the last name and what's left. Then, you split what's left by the space.declare @fn varchar(100) = 'Smith, John P.'select f.n , sur.name LastName, _1st.name FirstName, middle.initials MiddleInitialsfrom (values (@fn)) f(n)cross apply ( select charindex(',', f.n)) the(comma)cross apply ( select left(f.n, the.comma-1)) sur(name)cross apply ( select ltrim(right(f.n, len(f.n) - the.comma))) name(andinitial)cross apply ( select charindex(' ', name.andinitial)) _space(_between)cross apply ( select left(name.andinitial, _space._between-1)) _1st(name)cross apply ( select right(name.andinitial, len(name.andinitial) - _space._between)) middle(initials)