Hi folks,
Today I faced a situation that I need to capitalize sentences in one column of a SQL Server database table, so I created a function to do that, I put this here to share with you.
this function will change sentences like :
select dbo.Capitalize(‘sample text for capitalization!‘)
to :
Sample Text For Capitalization!
Here you will find the function :
CREATE FUNCTION dbo.Capitalize
(
@text varchar(max)
)
RETURNS varchar(max)
AS
BEGIN
declare @outputtext varchar(max)
declare @spaceCount int
declare @counter int
declare @term varchar(max)
declare @index int
declare @spaceIndex int
set @outputtext=”
set @text=ltrim(rtrim(@text))
set @spaceCount= len(@text)-len(replace(@text,’ ‘,”))
set @counter=0
set @index=1
while @counter<=@spaceCount
begin
if @index<>1
begin
set @index=@index+1
end
set @spaceIndex=charindex(‘ ‘,@text,@index)
if @spaceIndex=0
begin
set @spaceIndex=len(@text)+1
end
if @index<>1
begin
set @outputtext= @outputtext+’ ‘+ UPPER(substring(@text,@index,1))+LOWER(substring(@text,@index+1,(@spaceIndex-@index)-1))
end
else
begin
set @outputtext= @outputtext+ UPPER(substring(@text,@index,1))+LOWER(substring(@text,@index+1,(@spaceIndex-@index)-1))
end
set @counter=@counter+1
set @index=@spaceIndex
end
RETURN @outputtext
END
GO
and here you can see how to use this function:
select dbo.Capitalize(‘sample text for capitalization!’)
and result will be like this:
Sample Text For Capitalization!
This function has still spaces for development, for example if you have more than single space between words this will break, I will update it in future appropriate times.