sqlsql-serveruppercasetitle-case

SQL Server: Make all UPPER case to Proper Case/Title Case


I have a table that was imported as all UPPER CASE and I would like to turn it into Proper Case. What script have any of you used to complete this?


Solution

  • Here's a UDF that will do the trick...

    create function ProperCase(@Text as varchar(8000))
    returns varchar(8000)
    as
    begin
      declare @Reset bit;
      declare @Ret varchar(8000);
      declare @i int;
      declare @c char(1);
    
      if @Text is null
        return null;
    
      select @Reset = 1, @i = 1, @Ret = '';
    
      while (@i <= len(@Text))
        select @c = substring(@Text, @i, 1),
          @Ret = @Ret + case when @Reset = 1 then UPPER(@c) else LOWER(@c) end,
          @Reset = case when @c like '[a-zA-Z]' then 0 else 1 end,
          @i = @i + 1
      return @Ret
    end
    

    You will still have to use it to update your data though.