Une fonction de mise en majuscule des premières lettres des mots d’une phrase

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

Laisser un commentaire