Fonction InitCap pour SQL Server

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…

  1. CREATE FUNCTION [dbo].[initcap] (@TEXT VARCHAR(4000))
  2. RETURNS VARCHAR(4000) AS BEGIN DECLARE    @counter INT,
  3. @length INT,
  4. @CHAR CHAR(1),
  5. @textnew VARCHAR(4000)
  6.  
  7. IF @TEXT <>
  8.  
  9. BEGIN
  10.  
  11. SET @TEXT = RTRIM(@TEXT)
  12. SET @TEXT = LOWER(@TEXT)
  13. SET @length = LEN(@TEXT)
  14. SET @counter = 1
  15. SET @TEXT = UPPER(LEFT(@TEXT, 1) ) + RIGHT(@TEXT, @length - 1)
  16.  
  17. WHILE @counter <> @length
  18.  
  19. BEGIN
  20.  
  21. SELECT @CHAR = SUBSTRING(@TEXT, @counter, 1)
  22. IF @CHAR = SPACE(1)  OR @CHAR‘_’ OR @CHAR = ‘,’  OR @CHAR = ‘.’ OR @CHAR = \’
  23. OR @char = ‘/‘ OR @char = ‘(‘ OR @char = ‘)‘ OR @char = ‘-
  24.  
  25. BEGIN
  26.  
  27. SET @textnew = LEFT(@text, @counter) + upper(substring(@text, @counter+1, 1)) + RIGHT(@text, (@length - @counter) - 1)
  28. SET @text = @textnew
  29.  
  30. END
  31.  
  32. SET @counter = @counter + 1
  33.  
  34. END
  35.  
  36. END
  37.  
  38. RETURN @text END

Post a Comment

Your email is never published nor shared. Required fields are marked *