Pour ceux qui ne la connaissent pas, la fonction InitCap permet sous Oracle de remplacer la première lettre de chaque mot dans un string par une majuscule; les autres lettres sont en minuscule. Voici une fonction définie par l’usager pour simuler la fonction InitCap sous SQL Server.
J’utilise cette fonction depuis déjà longtemps au travail; je ne me souviens malheureusement pas à qui revient les mérites de la fonction originale…
-
CREATE FUNCTION [dbo].[initcap] (@TEXT VARCHAR(4000))
-
RETURNS VARCHAR(4000) AS BEGIN DECLARE @counter INT,
-
@length INT,
-
@CHAR CHAR(1),
-
@textnew VARCHAR(4000)
-
-
IF @TEXT <> ”
-
-
BEGIN
-
-
SET @TEXT = RTRIM(@TEXT)
-
SET @TEXT = LOWER(@TEXT)
-
SET @length = LEN(@TEXT)
-
SET @counter = 1
-
SET @TEXT = UPPER(LEFT(@TEXT, 1) ) + RIGHT(@TEXT, @length - 1)
-
-
WHILE @counter <> @length
-
-
BEGIN
-
-
SELECT @CHAR = SUBSTRING(@TEXT, @counter, 1)
-
IF @CHAR = SPACE(1) OR @CHAR = ‘_’ OR @CHAR = ‘,’ OR @CHAR = ‘.’ OR @CHAR = ‘\’
-
OR @char = ‘/‘ OR @char = ‘(‘ OR @char = ‘)‘ OR @char = ‘-‘
-
-
BEGIN
-
-
SET @textnew = LEFT(@text, @counter) + upper(substring(@text, @counter+1, 1)) + RIGHT(@text, (@length - @counter) - 1)
-
SET @text = @textnew
-
-
END
-
-
SET @counter = @counter + 1
-
-
END
-
-
END
-
-
RETURN @text END
-
Post a Comment