Voici une petite fonction reproduisant celle d’Oracle intitulée INITCAP pour MS SQL Server. Elle met en majsucule des premières lettres des mots d’une phrase.
CREATE FUNCTION dbo.F_INITCAP (@PHRASE VARCHAR(max))
RETURNS VARCHAR(max)
WITH RETURNS NULL ON NULL INPUT
AS
BEGIN
IF @PHRASE = '' RETURN @PHRASE
DECLARE @I INT, @C CHAR(1), @P BIT, @OUT VARCHAR(max)
SELECT @I = 1, @P = 0, @OUT = ''
WHILE @I <= LEN(@PHRASE)
BEGIN
SET @C = SUBSTRING(@PHRASE, @I, 1)
IF @C BETWEEN 'A' AND 'Z' COLLATE French_CI_AI
BEGIN
IF @P = 0
SET @OUT = @OUT + UPPER(@C)
ELSE
SET @OUT = @OUT + LOWER(@C)
SET @P = 1
END
ELSE
BEGIN
SET @P = 0
SET @OUT = @OUT + LOWER(@C)
END
SET @I = @I + 1
END
RETURN @OUT
END
GO
Exemple d’utilisation :
SELECT dbo.F_INITCAP ('Le tire-bouchon d''habitude est posé sur la table à papa') AS PHRASE
PHRASE
-----------------------------------------------------------
Le Tire-Bouchon D'Habitude Est Posé Sur La Table À Papa
***
Frédéric BROUARD – SQLpro – MVP SQL Server
Spécialiste SQL/BD modélisation de données
SQL & SGBDR http://sqlpro.developpez.com/
Expert SQL Server : http://www.sqlspot.com
audits – optimisation – tuning – formation