Karuta’s ASP & M$ SQLserver

Dicas, códigos e outras coisinhas de meus estudos para não esquecer…

Transforma a primeira letra em maiúscula e o restante em minúsculas

Posted by karuta em maio 4, 2010

CREATE FUNCTION InitCap(@Texto VARCHAR(255))
RETURNS Varchar(255)
AS BEGIN
    DECLARE @TextoTemp VARCHAR(255)
    DECLARE @i INT
    SET @TextoTemp = LOWER(@Texto)
    SET @TextoTemp = UPPER(LEFT(@TextoTemp,1)) + 
	SUBSTRING(@TextoTemp,2,LEN(@TextoTemp))

    WHILE CHARINDEX(' ',@TextoTemp,1) > 0
      BEGIN
        SET @i = CHARINDEX(' ',@TextoTemp,1)
        SET @TextoTemp = LEFT(@TextoTemp,@i-1) + '~*' + 
           UPPER(SUBSTRING(@TextoTemp,@i + 1,1)) +
	   SUBSTRING(@TextoTemp,@i+2,LEN(@TextoTemp))
      END

    SET @TextoTemp = REPLACE(@TextoTemp,'~*',' ')
    IF (PATINDEX('% da %', @TextoTemp) > 0)
      BEGIN
        SET @TextoTemp = STUFF(@TextoTemp, PATINDEX('% da %', @TextoTemp), 4, ' da ')
      END
    IF (PATINDEX('% das %', @TextoTemp) > 0)
      BEGIN
        SET @TextoTemp = STUFF(@TextoTemp, PATINDEX('% das %', @TextoTemp), 5, ' das ')
      END
    IF (PATINDEX('% de %', @TextoTemp) > 0)
      BEGIN
        SET @TextoTemp = STUFF(@TextoTemp, PATINDEX('% de %', @TextoTemp), 4, ' de ')
      END
    IF (PATINDEX('% do %', @TextoTemp) > 0)
      BEGIN
        SET @TextoTemp = STUFF(@TextoTemp, PATINDEX('% do %', @TextoTemp), 4, ' do ')
      END
    IF (PATINDEX('% dos %', @TextoTemp) > 0)
      BEGIN
        SET @TextoTemp = STUFF(@TextoTemp, PATINDEX('% dos %', @TextoTemp), 5, ' dos ')
      END
    SET @Texto = @TextoTemp
  RETURN @Texto
END
GO

SELECT dbo.InitCap('FULANO BELTRANO DA SILVA')
SELECT dbo.InitCap('fulano beltrano da silva')

Autor: Elton Bicalho (obrigado!)

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: