Writing an Oracle INITCAP Function in SQL Server
Hello everyone,
In this article, I will give information about writing the Oracle INITCAP function in SQL Server.
In SQL Server, in some cases, we may want to see and use functions that exist in other databases.
What is the INITCAP function?
While the INITCAP function converts the first character of the words in the text given as a parameter to uppercase, it also lowers the other characters.
You can easily do this with the help of the function below.
CREATE FUNCTION SQLServer_InitCap
(
@InputString VARCHAR(4000)
)
RETURNS VARCHAR(4000)
AS
BEGIN
DECLARE @Index INT;
DECLARE @Char CHAR(1);
DECLARE @PrevChar CHAR(1);
DECLARE @OutputString VARCHAR(255);
SET @OutputString = LOWER(@InputString);
SET @Index = 1;
WHILE @Index <= LEN(@InputString)
BEGIN
SET @Char = SUBSTRING(@InputString, @Index, 1);
SET @PrevChar = CASE
WHEN @Index = 1 THEN
' '
ELSE
SUBSTRING(@InputString, @Index - 1, 1)
END;
IF @PrevChar IN ( ' ', ';', ':', '!', '?', ',', '.', '_', '-', '/', '&', '''', '(' )
BEGIN
IF @PrevChar != ''''
OR UPPER(@Char) != 'S'
SET @OutputString = STUFF(@OutputString, @Index, 1, UPPER(@Char));
END;
SET @Index = @Index + 1;
END;
RETURN @OutputString;
END;
GO
--Use of Function
SELECT dbo.SQLServer_InitCap('yavuz selim kart')
When you run the function, you will see a result like the one below.
As you can see, we have seen that the first character of the words in the text is capitalized.
Good luck to everyone in business and life.