This scriipt can be changed to a function:
create table #temp (
name varchar(100))
insert into #temp values('GREGORY ALAN LARSEN')
insert into #temp values('TODD JOSHUA SMITH')
select
-- Get First Character of First Name
upper(substring(name,1,1)) +
-- Get rest of first name
lower(substring(name,2,charindex(' ',name)-2)) + ' ' +
-- Get first Character of Middle Name
upper(substring(name,charindex(' ',name)+1,1)) +
-- Get rest of Middle Name
lower(substring(substring(name,charindex(' ',name)+2,len(name)),1,
charindex(' ',substring(name,charindex(' ',name)+2,len(name)))-1)) + ' ' +
-- Get First Character to Last Name
upper(substring(substring(name,charindex(' ',name)+2,len(name)),
charindex(' ',substring(name,charindex(' ',name)+2,len(name)))+1,1)) +
-- Get Rest of Last Name
lower(substring(substring(name,charindex(' ',name)+2,len(name)),
charindex(' ',substring(name,charindex(' ',name)+2,len(name)))+2,
len(substring(name,charindex(' ',name)+2,len(name)))))
from #temp
drop table #temp