Thursday, January 22, 2015

Title case word or string in sql server

CREATE FUNCTION [dbo].[TitleCase](@OriginalText VARCHAR(MAX))
RETURNS VARCHAR(MAX)
BEGIN
DECLARE @CleanedText VARCHAR(max)
;with
  a1 as (select 1 as N union all select 1 union all
         select 1      union all select 1 union all
         select 1      union all select 1 union all
         select 1      union all select 1 union all
         select 1      union all select 1),
  a2 as (select 1 as N from a1 as a cross join a1 as b),
  a3 as (select 1 as N from a2 as a cross join a2 as b),
  a4 as (select 1 as N from a3 as a cross join a2 as b),
  Tally as (select top (len(@OriginalText)) row_number() over (order by N) as N from a4)
 
SELECT @CleanedText = ISNULL(@CleanedText,'') +
     --first char is always capitalized
CASE WHEN Tally.N = 1 THEN UPPER(SUBSTRING(@OriginalText,Tally.N,1))
     WHEN SUBSTRING(@OriginalText,Tally.N -1,1) = ' '  THEN UPPER(SUBSTRING(@OriginalText,Tally.N,1))
     ELSE LOWER(SUBSTRING(@OriginalText,Tally.N,1))
END
   
FROM Tally           WHERE Tally.N <= LEN(@OriginalText)          
               
RETURN @CleanedText
END

No comments:

Post a Comment

Opps Part 1 : Abstraction

  Abstraction in C# is a fundamental concept of object-oriented programming (OOP) that allows developers t...