Here's my contribution (I've just seen ayamas's and it's the same basic idea)...--variable exampledeclare @x varchar(50)set @x = 'FEDERATED STATES OF MICRONESIA'select @x as x, replace((select case when N = 1 or substring(@x, N-1, 1) = ' ' then upper(substring(@x, N, 1)) else lower(substring(@x, N, 1)) end from dbo.Tally b where b.N <= len(@x) for xml path('')) , '#x20;', ' ') as CamelCase--table select exampledeclare @t table (x varchar(50) not null)insert @t select 'FEDERATED STATES OF MICRONESIA'union all select 'another ONE'union all select 'YeT aNoThEr OnE'select x, replace((select case when N = 1 or substring(a.x, N-1, 1) = ' ' then upper(substring(a.x, N, 1)) else lower(substring(a.x, N, 1)) end from dbo.Tally b where b.N <= len(a.x) for xml path('')) , '#x20;', ' ') as CamelCasefrom @t a--table update exampleupdate a set x = replace((select case when N = 1 or substring(a.x, N-1, 1) = ' ' then upper(substring(a.x, N, 1)) else lower(substring(a.x, N, 1)) end from dbo.Tally b where b.N <= len(a.x) for xml path('')) , '#x20;', ' ')from @t aselect * from @tRyan Randall Solutions are easy. Understanding the problem, now, that's the hard part.